/ / Backbone Marionette diferentes visualizações compostas - javascript, backbone.js, marionette

Backbone Marionette diferentes vistas compostas - javascript, backbone.js, marionete

É possível ter uma exibição composta em marionete com DIFERENTES visualizações de itens dentro? Por exemplo:

var myCompositeView = Backbone.Marionette.CompositeView.extend({
template: Handlebars.compile(myTemplate),
itemView: myView, // I want different views, not just myView
initialize: function(){
this.collection = this.model.views;
},
appendHtml: function(collectionView, itemView){
collectionView.$(".container").append(itemView.el);
}

});

Basicamente, dependendo do modelo na coleção, quero criar uma certa exibição.

Respostas:

5 para resposta № 1

Você pode fazer isso com o método getItemView:

var VTbody = Backbone.Marionette.CompositeView.extend({
template: "#emptyTemplate",
tagName:"tbody",
//itemView:VTr,  /*No need to specify item View */
getItemView: function(item){
if(item.get("type")=="details") {
return  VTrDetails
} else  {
return VTr
}
}
});

Aqui item significa o modelo na coleção. Espero que isto ajude.


1 para resposta № 2

Você deseja substituir o buildItemView método:

buildItemView: function(item, ItemViewType, itemViewOptions){
var options = _.extend({model: item}, itemViewOptions);

build a custom view
if (item instanceOf ModelA) {
return new ItemViewA(options);
}
// else as needed

// default view
return new ItemViewType(options);
}