我有一个使用ExtJS 5.0.1的带有自定义Ext.panel.Panel
的主窗口。
单击自定义面板上显示的项目将创建并显示用于编辑所述项目的自定义Ext.window.Window
。
为了得到某种答案,或者从我自己的情况出发,我会询问标准Ext组件。
关闭自定义窗口时,需要更新自定义面板中的一个变量,以显示已进行了更改。
这与关闭窗口前的确认消息不同;该窗口不控制将信息保存到DB,但需要让另一个组件知道已经进行了更改。
这应该很简单,只要在窗口信息已更改的情况下,在面板上将布尔值unsavedChanges
设置为true
即可;我在一个更简单的页面上执行了这项操作,该页面没有额外的窗口作为障碍。
由于使用了窗口,我典型的使用this.up
或this.lookupReference
计算变量的方法返回null,或抛出错误。
我知道我可以考虑转到页面的父级,然后尝试向下工作,但我的经验不足,无法将标准javaScript与ExtJS的up
和down
功能整合在一起,或者至少了解ExtJS的复杂性,无法通过"项目窗口"导航回面板。
如何在关闭窗口时参考面板以更新面板的数据?
好吧,有几种方法。
首先,您可以在构建窗口的过程中传入面板或回调函数。例如:
// in panel
var window = Ext.create('MyWindow', { callingPanel: this })
// in window
onClose: function() { this.callingPanel.doStuff(); }
另一种方法是将侦听器注册到窗口的"关闭"事件。
// in panel
var window = Ext.create('MyWindow', {
listeners: {
scope: this,
close: this.doStuff
}
})
当您不想将窗口与调用面板紧密耦合时,侦听器方法往往效果最佳。