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 件のコメント:
コメントを投稿