考虑以下JS:
var ChildLayout = Marionette.Layout.extend({
template: "... let's not go here ...",
initialize: function() {
console.log('Child Layout Initialized'); // registers once
},
onRender: function() {
console.log('Rendered'); // registers 2 times
},
});
var ParentLayout = Marionette.Layout.extend({
template: "<div class='child-region'></div>",
regions: { childRegion: '.child-region' },
onRender: function() {
console.log('About to initialize ChildLayout'); // registers once
this.childRegion.show(new ChildLayout());
},
});
在上文中,我使用ParentLayout
在其ChildLayout
之一中呈现Regions
。请注意,我没有将任何类型的模型传递给ChildLayout
。
show
函数是Marionette的一个属性,应该逻辑初始化,然后渲染一次模型。木偶View
不应该重新渲染,除非我的理解模型有一些变化。
在我的应用程序中,onRender
的{{1}}会在我的代码中多次触发,但ChildLayout
仅触发一次。
我看不出是什么原因导致Marionette多次渲染initialize
- 这没有意义。
有什么见解?
在检查the source code of Marionette.js时,ChildLayout
函数显然只在初始化后立即呈现传递的视图。因此重新渲染只能从布局决定自主决定重新渲染。有趣。
答案 0 :(得分:0)
这是我自己的Zombie View问题,我自从处理过。