6

CollectionView があります

class MyCollectionView extends Backbone.Marionette.CollectionView
  itemView: MyItemView

  itemViewOptions: ->
    {
      indexInCollection: ?
    }

そして、そのモデルがコレクション内のどのインデックスにあるかを MyItemView に知らせたいと思います。

私は、MyItemViewで、私はそれを見つけることができると思います

@model.collection.indexOf(@model)

しかし、マリオネットの内部メカニズムを使用して、マリオネット CollectionView から MyItemView に直接渡す方法はありますか? このインデックスはすでにどこかで公開されていますか?

4

3 に答える 3

12

itemViewOptions、関数として設定された場合、itemまたはmodelパラメータを受け取ります。これを使用してインデックスを見つけます。


class MyCollectionView extends Backbone.Marionette.CollectionView
  itemView: MyItemView

  itemViewOptions: (model) ->
    {
      indexInCollection: this.collection.indexOf(model)
    }
于 2013-03-20T13:59:00.543 に答える
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
    }
  }
});

childViewOptionsのマリオネットのドキュメントで説明されているように

于 2015-04-01T23:44:49.670 に答える