Javascript 是什么让木偶网中的布局渲染?
考虑以下JS:Javascript 是什么让木偶网中的布局渲染?,javascript,backbone.js,marionette,Javascript,Backbone.js,Marionette,考虑以下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'
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。请注意,我没有将任何类型的模型传递给ChildLayout
show函数是木偶的一个属性,应该在逻辑上初始化模型,然后渲染一次。根据我的理解,木偶视图不应该重新呈现自己,除非其模型发生了一些变化
在我的应用程序中,ChildLayout的onRender在我的代码中触发了几次,尽管它的initialize只触发一次
我看不出是什么导致木偶多次渲染子布局-这没有意义
有什么见解吗
编辑
检查时,show函数显然只在初始化之后渲染一次传递的视图。因此,重新渲染只能在布局自主决定重新渲染时发生。有趣。这是我自己在僵尸视图中遇到的问题,后来我处理了这个问题。嗯,非常奇怪-我制作了小提琴,在渲染时没有看到任何重复-。有以下输出:“即将初始化子布局”、“已初始化子布局”、“已渲染”我也看不出上面的代码有任何错误。乍一看,你可能会猜到,父母得到了重新邀请,从而重新邀请了孩子,但据说这只注册了一次。您是否尝试过不使用布局作为子视图,而仅使用简单的项目视图?@WilbertvandeRidder我没有尝试,因为您可以看到,我在子模板中编写了“let's not go here”,它是一个非常大的布局,本身具有子区域。虽然这可能是真的,您可以使用一个简单的模板和Itemview来测试它,以查看问题是否仍然存在。如果没有,您有理由查看模板/子视图。