【问题标题】:Panel listener when a window is opened inside of it在其中打开窗口时的面板侦听器
【发布时间】:2013-02-20 18:14:17
【问题描述】:

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

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

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

panel.add(window);

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

【问题讨论】:

    标签: extjs4.1


    【解决方案1】:

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

    类似这样的:

    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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-14
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-17
      相关资源
      最近更新 更多