मैं एक कठपुतली CollectionView में गतिशील itemViews हेरफेर करने के लिए कोशिश कर रहा हूँ। संग्रह में एक ही मॉडल हैं, लेकिन मैंने मॉडल के अंदर टेम्पलेटनाम तर्क परिभाषित किया है।क्या RequJS के साथ गतिशील रूप से Marionette ItemView टेम्पलेट को बदलने का कोई तरीका है?
सवाल है, मैं इस तर्क से हेरफेर कर सकते हैं ItemView टेम्पलेट?
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;
});
धन्यवाद!
मैं 'getTemplate' फ़ंक्शन के साथ आइटम व्यू में टेम्पलेट का नाम असाइन करूंगा। https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.view.md#change-which-template-is-rendered-for-a-view –
और वहाँ एक तरीका है, प्रस्तुत करने के लिए requirejs टेम्पलेट लोड करने के बाद itemview? टेम्पलेट की आवश्यकता होने से पहले, आपके सोल्शन के साथ कोस मुझे नोटमैप त्रुटि मिलती है। 'getTemplate: function() {की आवश्यकता होती है ([ 'पाठ टेम्पलेट्स /!' + This.model.get ('editor_template') + '.html'], समारोह (खाका) {वापसी _.template (खाका);});} ' –