tutorial pixar pelicula mario fnafhs fnaf anime javascript backbone.js marionette

javascript - pixar - Marionette.CompositeView, cómo pasar parámetros a Marionette.ItemView



marionette pixar (2)

Desde Marionette v2.0.0, se utiliza childViewOptions en lugar de itemViewOptions para pasar parámetros a la vista secundaria.

var MyCompositeView = Marionette.CompositeView.extend({ childView: MyChildView, childViewOptions: function(model, index) { return { vent: this.options.vent } } }); var MyChildView = Marionette.ItemView.extend({ initialize: function(options) { // var events = options.vent; } }); new MyCompositeView({ vent: app.vent, collection: myCollection});

Pero para trabajar con eventos, use Marionette.Radio lugar de pasar app.vent a la vista.

Me gustaría acceder al app.vent de Marionette.ItemView.

Tal vez una opción podría ser pasar un parámetro ( app.vent ) a Marionette.ItemView desde Marionette.CompositeView .

Aquí mi código:

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

¿Algunas ideas?

PD:
No puedo acceder a la aplicación desde itemView porque hay un problema de dependencia circular.

app -> view/compositeView -> view/itemView


v0.9 agregó un atributo itemOptions que se puede usar para esto. Puede ser un objeto literal o una función que devuelve un objeto literal.

Backbone.Marionette.CompositeView.extend({ itemView: MyItemViewType, itemViewOptions: { some: "option", goes: "here" } });

Todas las key: "value" pares de key: "value" devueltos por este atributo se suministrarán a las opciones de la vista del elemento en el inicializador.

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

Además, si necesita ejecutar código específico para cada instancia de itemView que se genera, puede anular el método buildItemView para proporcionar una creación personalizada de la vista de elemento para cada objeto en la colección.

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; },

Para más información, ver: