constructor / initialize - Backbone.js
このとき渡したリストが Collection 内のモデルリストの初期値になります。
重要なのは initialize() 内でモデルを追加しても、引数として渡された値が優先されて、
結果的にモデルリストが変化しないことです。
var Model = Backbone.Model.extend({
defaults: {
name: ''
}
});
var Collection = Backbone.Collection.extend({
model: Model,
initialize: function() {
this.add({name: 'taro'});
}
});
var collection = new Collection([]);
console.log(collection.toJSON()); // []
上の例では Collection 内の initialize() 内で {name: 'taro'} を追加しようとしていますが、
実際には引数として最初に渡された [] が優先されます。
initialize() 内で Collection のモデルを操作したい場合には、
引数として null を渡せば OK です。
var Model = Backbone.Model.extend({
defaults: {
name: ''
}
});
var Collection = Backbone.Collection.extend({
model: Model,
initialize: function() {
this.add({name: 'taro'});
}
});
var collection = new Collection(null);
console.log(collection.toJSON()); // [{name: 'taro'}]
0 件のコメント:
コメントを投稿