Gibt es eine Möglichkeit das zu ändern Marionette ItemView-Vorlage dynamisch mit RequireJS?
Ich versuche zu manipulieren itemViews dynamisch in eine Marionette CollectionView. Die Sammlungen haben die gleichen Modelle, aber ich definiert templateName argument innerhalb der Modelle.
Die Frage ist, kann ich manipulieren, die ItemView Vorlage von diesem argument?
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;
});
Dank!
- Ich würde weisen Sie den Namen der Vorlage in der ItemView, mit der
getTemplate
Funktion. github.com/marionettejs/backbone.marionette/blob/master/docs/... - Und gibt es eine Möglichkeit, zu machen itemview nach requirejs geladen die Vorlage? Cose mit Ihrem sollution bekomme ich notemplate Fehler, vor der Vorlage erforderlich ist.
getTemplate: function() {require(['text!templates/' + this.model.get('editor_template') + '.html'], function(Template){return _.template(Template);});}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die override-Funktion getTemplate und schreiben Sie Ihre eigene Logik gibt. Die Marionette-Dokumentation empfiehlt die folgende option:
Ich denke gumballhead ist auf dem richtigen Weg. Sie können das überschreiben der
getTemplate
Funktion, dies zu tun.Hoffe, die tut, was Sie brauchen,
Zunächst einmal möchte ich danke an alle die versucht haben mir zu helfen.
Ich entschloss mich, mein eigenes problem.
Hier ist die Lösung eignet sich auch, wenn jemand es brauchen:
bearbeitet: (Besser sollution)
Vorschläge sind willkommen!