2014-04-15 77 views
0

我仍然在學習Backbone和Marionette,所以如果這是微不足道的,請原諒我。Backbone.Marionette集合迭代器作爲itemview類名稱的一部分

我有一個Backbone.Marionette.CompositeView,我迭代渲染Backbone.Marionette.ItemView的集合。

我的ItemView呈現與className:'列'。

有沒有辦法將迭代器添加爲每個ItemView的className的一部分?

我試圖做到的是這些元素呈現如下:

<div class="column column-1"></div> 
<div class="column column-2"></div> 
<div class="column column-3"></div> 
... 

我無法找到的文檔還是其他的問題在這裏合適的解決方案。

謝謝!

回答

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

+0

很不錯的解決方案,謝謝!但是我自己的代碼比我上面的例子複雜一點。因爲它作爲行和列的嵌套collectionview存在。所以索引只存在於每行1-10個。然而,我能夠應用相同的解決方案來爲行添加一個類名。這使我可以對每個單元格進行個性化設置,我認爲它會比所有單元格具有相同索引(即1-100(10列10行))效果更好。 –

+0

聽起來不錯!祝你的項目好運。 –