開始行: *キーワード [#e70e4f5a] - Titanium Mobile - Alloy *目標 [#ed4468c7] モデルの事始めです。要するに SQLite を使う、です。 + モデルを用意する + モデルを保存する (save) + モデルを取得する (fetch) + モデルを削除する (destroy) *方法 [#o99a4983] ** モデルを用意する [#yfae1b82] ウィザード「(プロジェクトで)右クリック > New > Alloy Mode... #ref(new_model.png,center,50%) 永続化するモデルの名前と属性を設定します。つまりテーブル... #ref(config_model.png,center,50%) すると次のコードを自動生成します。(基本このままでOK) - /app/models/User.js exports.definition = { config: { columns: { "name": "text", "isActive": "integer" }, adapter: { type: "sql", collection_name: "User" } }, extendModel: function(Model) { _.extend(Model.prototype, { // extended functions and properties go here }); return Model; }, extendCollection: function(Collection) { _.extend(Collection.prototype, { // extended functions and properties go here }); return Collection; } }; ** モデルを保存する [#xd5c7fc9] モデルはコントローラから操作します。 + モデルを生成して (Alloy.createModel(モデル名)) + 属性を与えて (Model.set(属性オブジェクト)) + 保存します (Model.save()) - Window.js $.save.addEventListener('touchstart', function() { var user = Alloy.createModel("User"); user.set({ name: "NAME", isActive: 1 }); user.save(); alert('saved'); }); ** モデルを取得する [#ud2114f3] + コレクション(モデル集合)を生成して (Alloy.createCollect... + DBMS からフェッチ (Collection.fetch(クエリオブジェクト)) + コレクションを操作します (Collection.map(function() {})) - Window.js $.find.addEventListener('touchstart', function() { var users = Alloy.createCollection('User'); users.fetch({ query: 'SELECT * FROM User WHERE isActive = 1' }); alert(users.length); users.map(function(user) { alert( 'id:' + user.id + ', ' + 'name:' + user.get('name') + ', ' + 'isActive:' + user.get('isActive') ); }); }); ** モデルを削除する [#j74fbeed] + モデルを生成して (Alloy.createModel(モデル名)) + DBMS からフェッチ (Model.fetch({id:識別子})) + モデルを削除します (Model.destroy()) - Window.js $.del.addEventListener('touchstart', function() { var user = Alloy.createModel('User'); user.fetch({id: "'f9fb6556-e763-6740-1621-b956bbdafe60'... user.destroy(); alert('deleted'); }); *解説 [#he776385] レコードをユニークに識別する id は alloy_id として Alloy ... *参考 [#ae0c1b95] - [[AlloyのModelにはじめの一歩を踏み込んだのでメモ。gener... 終了行: *キーワード [#e70e4f5a] - Titanium Mobile - Alloy *目標 [#ed4468c7] モデルの事始めです。要するに SQLite を使う、です。 + モデルを用意する + モデルを保存する (save) + モデルを取得する (fetch) + モデルを削除する (destroy) *方法 [#o99a4983] ** モデルを用意する [#yfae1b82] ウィザード「(プロジェクトで)右クリック > New > Alloy Mode... #ref(new_model.png,center,50%) 永続化するモデルの名前と属性を設定します。つまりテーブル... #ref(config_model.png,center,50%) すると次のコードを自動生成します。(基本このままでOK) - /app/models/User.js exports.definition = { config: { columns: { "name": "text", "isActive": "integer" }, adapter: { type: "sql", collection_name: "User" } }, extendModel: function(Model) { _.extend(Model.prototype, { // extended functions and properties go here }); return Model; }, extendCollection: function(Collection) { _.extend(Collection.prototype, { // extended functions and properties go here }); return Collection; } }; ** モデルを保存する [#xd5c7fc9] モデルはコントローラから操作します。 + モデルを生成して (Alloy.createModel(モデル名)) + 属性を与えて (Model.set(属性オブジェクト)) + 保存します (Model.save()) - Window.js $.save.addEventListener('touchstart', function() { var user = Alloy.createModel("User"); user.set({ name: "NAME", isActive: 1 }); user.save(); alert('saved'); }); ** モデルを取得する [#ud2114f3] + コレクション(モデル集合)を生成して (Alloy.createCollect... + DBMS からフェッチ (Collection.fetch(クエリオブジェクト)) + コレクションを操作します (Collection.map(function() {})) - Window.js $.find.addEventListener('touchstart', function() { var users = Alloy.createCollection('User'); users.fetch({ query: 'SELECT * FROM User WHERE isActive = 1' }); alert(users.length); users.map(function(user) { alert( 'id:' + user.id + ', ' + 'name:' + user.get('name') + ', ' + 'isActive:' + user.get('isActive') ); }); }); ** モデルを削除する [#j74fbeed] + モデルを生成して (Alloy.createModel(モデル名)) + DBMS からフェッチ (Model.fetch({id:識別子})) + モデルを削除します (Model.destroy()) - Window.js $.del.addEventListener('touchstart', function() { var user = Alloy.createModel('User'); user.fetch({id: "'f9fb6556-e763-6740-1621-b956bbdafe60'... user.destroy(); alert('deleted'); }); *解説 [#he776385] レコードをユニークに識別する id は alloy_id として Alloy ... *参考 [#ae0c1b95] - [[AlloyのModelにはじめの一歩を踏み込んだのでメモ。gener... ページ名: