Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是什么让木偶网中的布局渲染?_Javascript_Backbone.js_Marionette - Fatal编程技术网

Javascript 是什么让木偶网中的布局渲染?

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'

考虑以下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。请注意,我没有将任何类型的模型传递给ChildLayout

show函数是木偶的一个属性,应该在逻辑上初始化模型,然后渲染一次。根据我的理解,木偶视图不应该重新呈现自己,除非其模型发生了一些变化

在我的应用程序中,ChildLayout的onRender在我的代码中触发了几次,尽管它的initialize只触发一次

我看不出是什么导致木偶多次渲染子布局-这没有意义

有什么见解吗

编辑
检查时,show函数显然只在初始化之后渲染一次传递的视图。因此,重新渲染只能在布局自主决定重新渲染时发生。有趣。

这是我自己在僵尸视图中遇到的问题,后来我处理了这个问题。

嗯,非常奇怪-我制作了小提琴,在渲染时没有看到任何重复-。有以下输出:“即将初始化子布局”、“已初始化子布局”、“已渲染”我也看不出上面的代码有任何错误。乍一看,你可能会猜到,父母得到了重新邀请,从而重新邀请了孩子,但据说这只注册了一次。您是否尝试过不使用布局作为子视图,而仅使用简单的项目视图?@WilbertvandeRidder我没有尝试,因为您可以看到,我在子模板中编写了“let's not go here”,它是一个非常大的布局,本身具有子区域。虽然这可能是真的,您可以使用一个简单的模板和Itemview来测试它,以查看问题是否仍然存在。如果没有,您有理由查看模板/子视图。