鉴于 -
两个木偶应用程序,每个应用ItemView
与template
同一个region
,最后我创建了ItemView
- < / p>
<script>
ManagerMarionette1 = new Marionette.Application();
// region which affect ...
ManagerMarionette1.addRegions({
mainRegion: "#mainRegion",
});
// view item
ManagerMarionette1.RegionItemView = Marionette.ItemView.extend({
template: _.template('<div class="region">Marionette 1</div>'),
onRender: function () {
this.$('.region');
}
});
ManagerMarionette2 = new Marionette.Application();
// region which affect ...
ManagerMarionette2.addRegions({
mainRegion: "#mainRegion",
});
// view item
ManagerMarionette2.RegionItemView = Marionette.ItemView.extend({
template: _.template('<div class="region">Marionette 2</div>'),
onRender: function () {
this.$('.region');
}
});
...
MyMarionette1 = ManagerMarionette1.RegionItemView;
myMarionette1 = new MyMarionette1();
MyMarionette2 = ManagerMarionette2.RegionItemView;
myMarionette2 = new MyMarionette2();
</script>
region
代码是
<div id="mainRegion"></div>
两个木偶ItemView
渲染的两个按钮 -
<button onclick="ManagerMarionette1.mainRegion.show(myMarionette1)">Show Marionette 1</button>
<button onclick="ManagerMarionette2.mainRegion.show(myMarionette2);">Show Marionette 2</button>
显然它看起来是锻炼 - 每个button
渲染它的ItemView
但是在点击这些button
之后,它只在一个按钮中渲染,另一个停止渲染。 / p>
我如何管理Marionette
应用,以便为每个按钮呈现区域正常?
修改
根据 @David_Sulc 建议的新版本 - Here
答案 0 :(得分:3)
这是一个非常糟糕的主意:通常如果您在同一区域中显示2个不同的视图,则第二个show
调用将关闭当前显示的视图(以及sotp监听事件等)。但在你的情况下,你使用了2个不同的木偶区域,所以这种情况不会发生,而且每次在2个视图之间切换时,你可能会造成内存泄漏。
相反,您应该使用在主应用程序中显示视图的子模块(请参阅https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.application.module.md#defining-sub-modules)。