我通过传递一个代表我的产品的对象数组来创建集合的一个实例,我知道这会为集合中的每个产品创建模型的实例。
你理解正确。
您可能希望为产品集合再添加一个视图,该视图将是 a<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;
}
});
Collections 已经混合了许多 Underscore 方法,因此您不需要_.each(collection.models, ...)
,collection.each(...)
也可以正常工作并且更惯用。
然后,您将实例化并呈现您的每个集合视图之一:
var v = new V({ collection: your_existing_products_collection });
$(some_container).append(v.render().el);
Backbonecollection
专门对待视图的选项,这就是this.collection
从哪里来的initialize
。
每个产品的视图将负责绑定到产品的事件(例如名称、价格、数量、...更改),并负责从用户的购物车中添加/删除产品。每个集合视图负责涉及整个集合的任何事情:集合重置,添加新产品,删除产品,......
这是一个快速的'n'dirty演示,以帮助说明我在说什么:http: //jsfiddle.net/ambiguous/SSstN/1/