我还在学习Backbone和Marionette,请原谅我,如果这是微不足道的。
我有一个Backbone.Marionette.CompositeView,我迭代渲染Backbone.Marionette.ItemView的集合。
我的ItemView使用className:'column'呈现。
有没有办法将迭代器添加为每个ItemView的className的一部分?
我想要完成的是元素呈现如下:
<div class="column column-1"></div>
<div class="column column-2"></div>
<div class="column column-3"></div>
...
我在文档中找不到合适的解决方案,也没有其他问题。
谢谢!
答案 0 :(得分:1)
基本上您需要知道的是集合中itemView模型的索引。这样的事情会起作用:
// Create an itemView
var itemView = Backbone.Marionette.ItemView.extend({
template: "#item-template",
onRender: function () {
this.$el.addClass('class-nr-' + this.options.itemIndex);
}
});
// Create a collectionView
var colView = Backbone.Marionette.CollectionView.extend({
collection: colInstance,
itemView: itemView,
itemViewOptions: function (model, index) {
return {
itemIndex: index
};
}
});
看到这个小提琴:http://jsfiddle.net/Cardiff/VTkB2/2/
文档:https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.collectionview.md#collectionviews-itemviewoptions