0

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

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

知道是什么导致该区域未定义吗?

谢谢扎弗

4

1 回答 1

2

代码有两个问题。

首先,您应该使用MyApp.vent.bindTo()而不是MyApp.vetn.bind()确保正确管理事件。

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

将来,您可以通过附加this.cid到您的console.log语句来检测到这一点。例如:

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

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

于 2012-08-22T23:48:28.400 回答