Javascript 集合的Backbone.js包装模板
我的主干应用程序将有一个集合的多个对象,每个集合包含多个模型。我想做的是将每个集合对象包装到一个div元素中,并根据集合对象属性值定制一个标题 目前集合正在使用模型的视图,并且不包含任何自己的模板 将每个集合对象包装到模板中的最佳方法是什么 更新: 以下是我的CollectionView目前的样子:Javascript 集合的Backbone.js包装模板,javascript,backbone.js,Javascript,Backbone.js,我的主干应用程序将有一个集合的多个对象,每个集合包含多个模型。我想做的是将每个集合对象包装到一个div元素中,并根据集合对象属性值定制一个标题 目前集合正在使用模型的视图,并且不包含任何自己的模板 将每个集合对象包装到模板中的最佳方法是什么 更新: 以下是我的CollectionView目前的样子: window.OrderListView = Backbone.View.extend({ el: '#all-orders-container', template: _.temp
window.OrderListView = Backbone.View.extend({
el: '#all-orders-container',
template: _.template(orderListTpl),
initialize: function() {
this.$el.append(this.template({order_id: this.collection.order_id}));
},
render: function(){
var _this = this;
this.collection.forEach(this.addItem, this);
},
addItem: function(orderItem){
var orderView = new OrderView({
model: orderItem
});
this.$el.append(orderView.render());
}
});
同一CollectionView类将有多个对象。现在的问题是-如何将这些元素呈现为单独的元素,并将新的orderView元素附加到适当的元素中?实现这样的集合视图
var CollectionView = Backbone.View.extend({
render:function(){
var _this = this;
this.collection.each(function(model){
_this.addItem(model)
})
},
addItem:function(model){
var itemView = new ItemView({
model:model
});
itemView.render().$el.appendTo(this.$el);
}
});
您可以为您的集合解释一些示例,其中包含多个模型的对象?主干集合旨在组织特定模型的对象,否则它不完全是主干集合,但我应该能够拥有同一集合的多个对象,对吗?谢谢,这是一个很好的提示。但是,这个CollectionView将有多个对象,我想知道如何将适当的根元素传递给这个特定CollectionView的$el。或者我应该在CollectionView初始化时更改$el的值,以便每次都创建一个新的值?@AlexanderSavin我不太确定上面的评论中有什么问题,如果是关于将$el分配给CollectionView,您可以在实例化CollectionView时这样做,比如
var collView=new CollectionView({el:'your selector'))
是的,我现在通过手动为每个CollectionView对象生成el解决了这个问题。不是很优雅,但是很管用!我不知道您是否已经知道,如果您不为视图指定el,它将创建自己的视图。您不需要在上创建,请查看主干源代码中的\u ensureElement
函数,您可能会更好地了解跳过elThanks时会发生什么,这是您不知道的。