由于'undefined'区域,Backbone Marionette重新显示(显示)嵌套布局失败

时间:2012-08-22 04:36:17

标签: backbone.js marionette

我有一个嵌套布局的应用程序。顶级布局位于应用级别,第二级位于其中一个区域。当我显示第二级布局时,我触发一个事件来显示第二级布局的区域。这在第一次工作正常,但是当我将第二级布局与其他视图或布局交换并再次显示时,它会失败。问题在http://jsfiddle.net/mzafer/VLY4t/

重新创建

在屏幕中点击“Content1”,然后点击“Content 2”。您将看到显示第二级布局的区域(“这是实际的region1内容”&“这是实际的region2内容”)。现在再次单击“Content1”,然后再单击“Content 2”..这次不显示实际内容,只显示占位符。在第二次“thisView.region1”未定义。

知道导致该区域未定义的原因是什么?

由于 扎菲尔

1 个答案:

答案 0 :(得分:2)

代码存在两个问题。

首先,您应该使用MyApp.vent.bindTo()代替MyApp.vetn.bind()来确保对事件进行妥善管理。

其次,在关闭布局视图时,您需要从事件中取消绑定。现在发生的事情是,因为你没有取消绑定,你最终得到一个封闭的视图(第一个实例)仍然试图访问其不再存在的区域元素。

将来,您可以通过在this.cid语句中添加console.log来检测此问题。例如:

console.log('Responding to an event.', this.cid);

我调整了您的代码以使其正常工作,上面提到了两个更改:http://jsfiddle.net/VLY4t/14/