我有一个嵌套布局的应用程序。顶级布局位于应用级别,第二级位于其中一个区域。当我显示第二级布局时,我触发一个事件来显示第二级布局的区域。这在第一次工作正常,但是当我将第二级布局与其他视图或布局交换并再次显示时,它会失败。问题在http://jsfiddle.net/mzafer/VLY4t/
重新创建在屏幕中点击“Content1”,然后点击“Content 2”。您将看到显示第二级布局的区域(“这是实际的region1内容”&“这是实际的region2内容”)。现在再次单击“Content1”,然后再单击“Content 2”..这次不显示实际内容,只显示占位符。在第二次“thisView.region1”未定义。
知道导致该区域未定义的原因是什么?
由于 扎菲尔
答案 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/