In der folgenden Layout
, ich bin eine CollectionView
hinzufügen, um eine SELECT-Liste innerhalb onRender
anzuzeigen. Unmittelbar danach verwende ich den UI-Hash, um alle Steuerelemente innerhalb der Ansicht zu aktivieren oder zu deaktivieren. Dies funktioniert nicht für den von new App.View.Categories
generierten SELECT.UI-Hash-Probleme mit Backbone Marionette Layout
Sollte es? Oder funktioniert der UI-Hash nicht unter Regions
innerhalb einer Layout
?
App.View.UploadFile = Backbone.Marionette.Layout.extend({
template: '#upload-file-template',
regions:{
category: 'td:nth-child(4)'
},
ui:{
inputs: 'textarea, select, .save'
},
onRender: function(){
this.category.show(
new App.View.Categories({
collection: App.collection.categories
}) // generates the SELECT list
);
console.log(this.ui.inputs); // Length 2. Missing select.
console.log(this.$('textarea, select, .save')); // Length 3
this.ui.inputs.prop(
'disabled', (this.model.get('upload_status')!='staged')
);
}
});
Es gibt keine Fehler. Ich habe oben ein Beispiel console.logs hinzugefügt. Der Selektor verlässt die Auswahl, aber es gibt die anderen zwei Elemente zurück. Wie Sie in der zweiten console.log sehen können, funktioniert der gleiche Selektor in $ works. – Bart
Mit Blick auf die Quelle, denke ich, sehe ich das Problem. Diese Elemente werden gebunden, BEVOR das SELECT-Element in onRender hinzugefügt wird. Vielleicht ist das Hinzufügen von Regionen in onRender nicht die beste Vorgehensweise. Hast du ein anderes Muster zu empfehlen? – Bart
Danke für das Update! – Bart