在Marionette.js中进行布局渲染的原因是什么?

时间:2014-06-06 02:50:01

标签: 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'); // 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函数显然只在初始化后立即呈现传递的视图。因此重新渲染只能从布局决定自主决定重新渲染。有趣。

1 个答案:

答案 0 :(得分:0)

这是我自己的Zombie View问题,我自从处理过。