商品を表すオブジェクトの配列を渡すことでコレクションのインスタンスを作成しました。これにより、コレクション内の各商品のモデルのインスタンスが作成されることを理解しています。
あなたは正しく理解しています。
製品のコレクションにもう1つのビューを追加することをお勧めします。このビューは、<ul>
製品ごとのビュー(<li>
s)を管理します。
var V = Backbone.View.extend({
tagName: 'ul',
initialize: function() {
_.bindAll(this, 'render');
this.collection.on('reset', this.render);
// And other events as needed...
},
render: function() {
var _this = this;
this.collection.each(function(p) {
var v = new view_product({ model: p });
_this.$el.append(v.render().el);
});
return this;
}
});
コレクションにはすでに多くのアンダースコアメソッドが混在して_.each(collection.models, ...)
いるため、必要はなくcollection.each(...)
、同様に機能し、より慣用的です。
次に、コレクションごとのビューの1つをインスタンス化してレンダリングします。
var v = new V({ collection: your_existing_products_collection });
$(some_container).append(v.render().el);
バックボーンはcollection
、ビューへのオプションを特別に扱います。これは、のthis.collection
由来initialize
です。
製品ごとのビューは、製品のイベント(名前、価格、数量、...変更など)へのバインドを処理し、人のカートからの製品の追加/削除を処理します。コレクションごとのビューは、コレクション全体に関連するすべての責任を負います。コレクションのリセット、新製品の追加、製品の削除、...
これが私が話していることを説明するのに役立つ簡単な「n」ダーティデモです:http://jsfiddle.net/ambiguous/SSstN/1/