Javascript 木偶:使用索引将类添加到ItemView
我目前有一个复合视图,我希望每个ItemView都基于其索引进行渲染 例如,我想向每隔三个Javascript 木偶:使用索引将类添加到ItemView,javascript,backbone.js,marionette,Javascript,Backbone.js,Marionette,我目前有一个复合视图,我希望每个ItemView都基于其索引进行渲染 例如,我想向每隔三个项目视图添加一个类 我所倾向的解决方案是改变appendHtml(),每三次向视图添加一个类。我已经把代码放在下面了 使用getItemView()有什么好处吗?我看到的一个缺点是它不能直接访问索引 模板 <script id="list-item" type="text/html"> <%= name %> </script> <script id="lis
项目视图添加一个类
我所倾向的解决方案是改变appendHtml()
,每三次向视图添加一个类。我已经把代码放在下面了
使用getItemView()
有什么好处吗?我看到的一个缺点是它不能直接访问索引
模板
<script id="list-item" type="text/html">
<%= name %>
</script>
<script id="list-layout" type="text/html">
<div class='collection'>
<h3><%= name %></h3>
<ul></ul>
</div>
</script>
一个选项是使用buildItemView
现在您将无法直接访问索引,但可以使用下划线方法来解决这一问题(这些方法都应该扩展到主干集合中,尤其是这个集合)
您获得的主要好处是可以直接影响ItemView的类
var ListComposite = Backbone.Marionette.CompositeView.extend({
itemView: ListItemView,
itemViewContainer: "ul",
template: '#list-layout',
buildItemView: function(item, ItemViewType, itemViewOptions){
var index = this.collection.indexOf(item);
var options = _.extend({model: item}, itemViewOptions, {className:"someClassName" + index});
var view = new ItemViewType(options);
return view;
},
});
看一看谢谢,大卫。这里提供的解决方案在概念上似乎更加合理。
var ListComposite = Backbone.Marionette.CompositeView.extend({
itemView: ListItemView,
itemViewContainer: "ul",
template: '#list-layout',
buildItemView: function(item, ItemViewType, itemViewOptions){
var index = this.collection.indexOf(item);
var options = _.extend({model: item}, itemViewOptions, {className:"someClassName" + index});
var view = new ItemViewType(options);
return view;
},
});