在Marionette CollectionView中,如何将模型的索引(在集合中)传递给ItemView?

Joe*_*erg 6 marionette

我有一个CollectionView

class MyCollectionView extends Backbone.Marionette.CollectionView
  itemView: MyItemView

  itemViewOptions: ->
    {
      indexInCollection: ?
    }
Run Code Online (Sandbox Code Playgroud)

我希望MyItemView知道它的模型所在的集合中的哪个索引.

我想,在MyItemView中,我可以通过它找到它

@model.collection.indexOf(@model)
Run Code Online (Sandbox Code Playgroud)

但是有没有办法使用一些内部的Marionette机制将它从我的Marionette CollectionView直接传递到MyItemView中?这个指数已经暴露在某个地方吗?

Der*_*ley 12

itemViewOptions,设置为函数时,接收到一个itemmodel参数.用它来查找索引:


class MyCollectionView extends Backbone.Marionette.CollectionView
  itemView: MyItemView

  itemViewOptions: (model) ->
    {
      indexInCollection: this.collection.indexOf(model)
    }
Run Code Online (Sandbox Code Playgroud)


Die*_*goG 7

从Marionette 2.0.0开始,您可以使用childViewOptions函数:

var CollectionView = Marionette.CollectionView.extend({
  childViewOptions: function(model, index) {
    // do some calculations based on the model
    return {
      foo: "bar",
      childIndex: index
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

正如childViewOptions的Marionette文档中所述