Ответ 1
v0.9 добавлен атрибут itemOptions
, который можно использовать для этого. Это может быть либо литерал объекта, либо функция, которая возвращает литерал объекта.
Backbone.Marionette.CompositeView.extend({
itemView: MyItemViewType,
itemViewOptions: {
some: "option",
goes: "here"
}
});
Все пары key: "value"
, возвращаемые этим атрибутом, будут предоставлены параметрам 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;
},
Для получения дополнительной информации см.
- журнал изменений для v0.9
- документация CollectionView для itemViewOptions - обратите внимание, что CompositeView выходит из CollectionView, поэтому все документы CollectionView действительны и для CompositeView
- аннотированный исходный код buildItemView