『Backbone.jsを学び始める』の第3章Backbone ModelsとCollections(二)

3191 ワード

本編の内容は『Beginning Backbone.js』から翻訳され、原作者のJames Sugrue.転載は関連情報を明記してください.
 
本文の内容は前編ブログの内容に続く
 

Modelプロパティ


データがモデルを作成する主な理由であるため、まずプロパティに注目しましょう.この部分はあなたがBackboneを使っていることをカバーしています.Modelでは、プロパティに関連するすべての操作が実行されます.
 

属性値の取得


任意のモデルオブジェクトのプロパティは、.getメソッドは、読み込むプロパティ名を簡単に取得します.簡単なデフォルト値を使用しているので、Bookオブジェクトを初期化すると、次の行のコードが「Book Title」を出力します.
console.log(myBook.get('name'));

 
オブジェクトの作成中にモデル内のアトリビュートに値を渡すと、各インスタンスのペアが異なるようになります.
var thisBook = new Book({
    name: 'Beginning Backbone', 
    author: 'James Sugrue'
});

 
2つのアトリビュートのいずれかのアトリビュート値を読み込むと、作成時に入力された値がデフォルト値に代わります.
console.log(thisBook.get('name') + ' by ' + thisBook.get('author'));

 
使用することもできますattributesプロパティは、JSONオブジェクトとしてモデル内のすべてのデータを読み込みます.
console.log(thisBook.attributes); // JSON 

 

属性値の変更


コンストラクション関数の外で属性値を変更するには、同様の方法で、関数呼び出しによって関数フォーマットを変更することができる.set('<変数名>',<値>).たとえば、本のnameプロパティを変更すると、次のように使用できます.
thisBook.set('name', 'Beginning Backbone.js');

 
上の方法でオブジェクトに新しいプロパティを追加することもできます.
thisBook.set('year', 2013); // year 

 

属性の削除


モデルの無駄なプロパティを削除したい場合があります.次の例では、新しいプロパティが追加され、削除されます.2番目のconsole.log文は、属性戻り値undefinedの結果を得ます.
thisBook.set('year', 2013);
console.log('Book year ' + thisBook.get('year'));
thisBook.unset('year');
console.log('Book year ' + thisBook.get('year'));

 
Backboneは、モデルに属性が含まれているかどうかを確認するための簡潔な方法を提供する.hasメソッドで、ブール値を返します.
// 
var hasYear = thisBook.has('year');  // false
var hasName = thisBook.has('name');  // true
console.log('Has an attribute called year : ' + hasYear);
console.log('Has an attribute called name : ' + hasName);

 
また、clearメソッドを使用してモデル内のすべてのプロパティを削除することもできます.
// 
var newBook = new Book({
    name: 'Another Book',
    author: 'You'
});
newBook.clear();  // 
console.log('Has an attribute called name : ' + newBook.has('name')); // false

 
unsetメソッドとclearメソッドは、操作が完了したときにモデルのchangeイベントがトリガーされるかどうかを示すブール値に設定できる追加のoptionsパラメータオブジェクトも受け入れることができます.この章の「モデルイベント」セクションでは、これらのイベントの原理を説明します.
thisBook.unset('year', {silent: true});

    

モデルのクローン作成


通常、Backboneモデルをコピーし、同じプロパティをすべて維持したいと思っています.深度レプリケーションの詳細を作成する方法を心配する必要はありません.簡単に使用するだけです.cloneメソッドでは、クローンのモデルインスタンスを作成できます.
var clonedBook = thisBook.clone();