javascript – Marionette.CompositeView,如何传递参数到Marionette.ItemView

我想从Marionette.ItemView访问app.vent。

也许一个选项可能是将参数(app.vent)传递给Marionette.ItemView从Marionette.CompositeView。

这里我的代码:

// view/compositeView.js
define([
    'marionette',
    'views/item'
], function (Marionette, itemView) {
    var ListView = Marionette.CompositeView.extend({ 
        itemView: itemView
    });
});

有任何想法吗?

P.S .:
我无法从itemView访问应用程序,因为存在循环依赖问题。

app -> view/compositeView -> view/itemView
v0.9添加了一个可以用于此的itemOptions属性。它可以是一个对象文字或返回一个对象文字的函数。



Backbone.Marionette.CompositeView.extend({
  itemView: MyItemViewType,

  itemViewOptions: {
    some: "option",
    goes: "here"
  }

});

此属性返回的所有键:“值”对将在初始化程序中提供给itemview的选项


Backbone.Marionette.ItemView.extend({
  initialize: function(options){
    options.some; //=> "option"
    options.goes; //=> "here"
  }
});

另外,如果您需要为构建的每个itemView实例运行特定的代码,您可以覆盖buildItemView方法,为集合中的每个对象提供自定义的项目视图创建。


  buildItemView: function(item, ItemView){

    // do custom stuff here

    var view = new ItemView({
      model: item,
      // add your own options here

    });

    // more custom code working off the view instance

    return view;
  },

有关详细信息,请参阅:

> the change log for v0.9
> the CollectionView documentation for itemViewOptions – 请注意,CompositeView从CollectionView扩展,因此所有CollectionView文档也适用于CompositeView
> the buildItemView annotated source code

http://stackoverflow.com/questions/11273115/marionette-compositeview-how-to-pass-parameters-to-marionette-itemview

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – Marionette.CompositeView,如何传递参数到Marionette.ItemView