Backbone.Marionette集合迭代器作为itemview类名的一部分

时间:2014-04-15 14:10:40

标签: marionette

我还在学习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>
...

我在文档中找不到合适的解决方案,也没有其他问题。

谢谢!

1 个答案:

答案 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