考虑以下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不应重新渲染自身,除非其模型发生了变化。

在我的应用程序中,onRenderChildLayout在我的代码中多次触发,尽管其initialize仅触发一次。

我看不到是什么原因导致木偶多次渲染ChildLayout-这没有道理。

有见识吗?

编辑

在检查the source code of Marionette.js时,show函数显然仅在初始化后立即渲染一次传递的视图。因此,只能从布局自主决定重新渲染时才发生重新渲染。有趣。

最佳答案

原来这是我自己处理的Zombie View的问题。

关于javascript - 是什么使Marionette.js中的布局呈现?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24073405/

10-12 12:47