Имам Layout, с регион. Когато оформлението се инициализира, искам автоматично да инициализира предварително зададен изглед, който да направи в неговия регион, и да го покаже/затвори, когато самото оформление се покаже/затвори.
Актуален пример от https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.layout.md:
AppLayout = Backbone.Marionette.Layout.extend({
template: "#layout-template",
regions: {
mainRegion: "#menu",
content: "#content"
}
});
var layout = new AppLayout();
ParentAppLayout.show(layout); // Render the Layout to a parent
layout.mainRegion.show(new SubView());
Този пример показва, че оформлението трябва първо да бъде показано, и след след това мога да стартирам и да покажа дъщерния изглед. (по-горе, ако покажа SubView
преди самото layout
да се покаже, нищо няма да се случи, предполагам, защото селекторът не съществува в DOM?)
За оформление, което може да се използва повторно, искам да добавя това изпращане на изглед в самото оформление, вместо да продължавам да го добавям ръчно навсякъде, където се използва изгледът. Как може да се постигне това?
AppLayout = Backbone.Marionette.Layout.extend({
template: "#layout-template",
regions: {
mainRegion: "#menu",
content: "#content"
},
initalize: function() {
this.mainRegion.attachView(new SubView());
},
onShow: function() {
this.mainRegion.show(this.mainRegion.currentView);
}
});
var layout = new AppLayout();
ParentAppLayout.show(layout); // Render the Layout to a parent, expecting the child view to also be created automatically
Този подход обаче също не прави нищо - няма грешки.