Ben itemViews bir Marionette CollectionView dinamik olarak işlemeye çalışıyorum. Koleksiyonlar aynı modellere sahip, ancak modellerin içinde templateName argümanını tanımladım.Marionette ItemView şablonunu RequireJS ile dinamik olarak değiştirmenin bir yolu var mı?
Soru şu, bu argüman tarafından ItemView şablonunu kullanabilir miyim?
ItemView:
define(['text!templates/ComponentItemViewTemplate.html','models/ComponentModel'], function (template, model) {
var ItemView = Backbone.Marionette.ItemView.extend({
template: _.template(template),
model: model
});
return ItemView;
});
CollectionView:
define(['views/ComponentItemView', 'views/LoadingView'], function(ItemView, LoadingView) {
var ComponentListView = Backbone.Marionette.CollectionView.extend({
emptyView : LoadingView,
id: "component-list",
itemView: ItemView,
events: {
'click .title span' : 'show'
},
appendHtml: function(collectionView, itemView, index){//i would like to render different templates, for different models.
itemView.$el.draggable({ helper: "clone", cancel: ".component .title span", connectToSortable: ".ui-sortable" });
collectionView.$el.append(itemView.el);
},
show: function(r) {
var target = $(r.target);
if(target.parent().hasClass('open')){
target.parent().removeClass('open');
target.parent().next().slideDown('fast');
}else{
target.parent().addClass('open');
target.parent().next().slideUp('fast');
}
}
});
return ComponentListView;
});
teşekkürler!
ben 'getTemplate' işlevi ile, ItemView Şablon adını vereceği bildirildi. https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.view.md#change-which-template-is-rendered-for-a-view –
Ve işlemek için bir yol var mı requirejs şablon yüklendikten sonra itemview? Solventinizle Cose, şablona ihtiyaç duymadan önce hata yapmam. 'getTemplate: function() {require (['text! Templates /' + this.model.get ('editor_template') + '.html'], işlev (Şablon) {return _.template (Şablon);});} ' –