我有一个充当桌面的Panel。单击按钮时,面板内会打开一个窗口。我在配置中设置了以下内容:
var win = Ext.create('window', {
renderTo : currentPanel.getLayout().getTarget(),
constrain : true
});
win.show();
所以我的窗口在主面板中打开并受到限制。我希望面板在其中打开任何窗口时监听,以便我可以监控它。有没有听众会这样做?我尝试了“添加”和“添加”,但必须通过以下方式将窗口添加到面板中:
panel.add(window);
但在我的情况下,我没有将它添加到容器中,但我打开它并使用renderTo将其约束到我的容器。
答案 0 :(得分:1)
我要做的是为您的桌面创建panel的子类,为您的Windows创建window的子类。将“windowOpened”侦听器添加到自定义面板,然后从自定义窗口的“show”侦听器中触发此事件。
这样的事情:
<强> DesktopPanel.js 强>
Ext.define('App.view.DesktopPanel', {
extend: 'Ext.panel.Panel',
alias: 'widget.desktoppanel',
initComponent: function() {
this.callParent();
this.addListener('windowOpened', function(newWindow){
//Do whatever it is you want to do here
});
}
});
<强> DesktopWindow.js 强>
Ext.define('App.view.DesktopWindow', {
extend: 'Ext.window.Window',
alias: 'widget.desktopwindow',
constrain: true,
initComponent: function() {
this.renderTo = this.ownerPanel.getLayout().getTarget();
this.callParent();
this.addListener('show', function(){
this.ownerPanel.fireEvent('windowOpened',this);
});
}
});
然后你的代码会是这样的:
var win = Ext.create('App.view.DesktopWindow', {
ownerPanel: MyDesktop, //an instance of 'DesktopPanel'
});
win.show();