0

我有一个充当桌面的面板。单击按钮时,面板内会打开一个窗口。我在配置中设置了以下内容:

var win = Ext.create('window', { 
   renderTo : currentPanel.getLayout().getTarget(),
   constrain : true
});
win.show();

所以我的窗口在主面板中打开并受到限制。我希望面板在其中打开任何窗口时进行监听,以便我可以监视它。有没有听众会这样做?我尝试了“添加”和“添加”,但必须通过以下方式将窗口添加到面板:

panel.add(window);

但在我的情况下,我没有将它添加到容器中,而是打开它并使用 renderTo 将其约束到我的容器中。

4

1 回答 1

1

我要做的是为您的桌面创建一个面板子类,并为您的窗口创建一个窗口子类。将“windowOpened”侦听器添加到您的自定义面板,并从您的自定义窗口的“显示”侦听器中触发此事件。

像这样的东西:

桌面面板.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
        });
    }
});    

桌面窗口.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();
于 2013-02-22T03:37:58.350 回答