0

デスクトップとして機能するパネルがあります。ボタンをクリックすると、パネル内にウィンドウが開きます。設定で次のように設定します。

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

そのため、私のウィンドウは開いていて、メインパネルに拘束されています。パネルの内部にウィンドウが開いているときにパネルがリッスンして、監視できるようにします。これを行うリスナーはいますか?'add'と'added'を試しましたが、ウィンドウをパネルに追加する必要があります。

panel.add(window);

しかし、私の場合はコンテナに追加していませんが、renderToを使用してコンテナを開き、コンテナに制約しています。

4

1 に答える 1

1

私がすることは、デスクトップ用のパネルのサブクラスとウィンドウ用のウィンドウのサブクラスを作成することです。カスタムパネルに「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();
于 2013-02-22T03:37:58.350 に答える