我有一个Marionette应用程序,它不仅仅是一个区域。
App.addRegions({
pageRegion: '#page',
contentsRegion :'#contents'
});
作为App.pageRegion的一部分,我添加了一个布局。
App.ConfiguratorLayout = Marionette.Layout.extend({
template: '#configurator-page',
regions: {
CoreConfiguratorRegion: '#Core-Configurator-Region',
SomeOtherRegion:'#someOtherregion'
}
});
此布局在应用程序启动之前呈现。
App.addInitializer(function() {
var configLayout = new App.ConfiguratorLayout();
App.pageRegion.show(configLayout);
});
稍后在应用程序中,我只需要更改configLayout的内容。
我正在努力实现这样的目标。 App.pageRegion.ConfiguratorLayout.CoreConfiguratorRegion.show(someOtherLayout);
除了在App.pageRegion的$ el上使用DOM选择器之外,还有办法做到这一点。
App.pageRegion。$ el.find( '#...')
答案 0 :(得分:0)
而不是在应用初始值设定项中,将configLayout
初始化代码移动到控制器中,该控制器可以保留对它的引用,然后show()
某个区域中的某些内容。
// pseudocode:
ConfigController = Marionette.Controller.extend({
showConfig: function() {
var layout = new App.ConfiguratorLayout();
App.pageRegion.show(configLayout);
var someOtherLayout = new App.CoreConfiguratorLayout();
layout.coreConfiguratorRegion.show(someOtherLayout);
// ... maybe create and show() some views here?
}
});
App.addInitializer(function() {
var controller = new ConfigController();
// more likely this would be bound to a router via appRoutes, instead of calling directly
controller.showConfig();
});