考虑以下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
的ChildLayout
在我的代码中多次触发,尽管其initialize
仅触发一次。我看不到是什么原因导致木偶多次渲染
ChildLayout
-这没有道理。有见识吗?
编辑
在检查the source code of Marionette.js时,
show
函数显然仅在初始化后立即渲染一次传递的视图。因此,只能从布局自主决定重新渲染时才发生重新渲染。有趣。 最佳答案
原来这是我自己处理的Zombie View的问题。
关于javascript - 是什么使Marionette.js中的布局呈现?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24073405/