0

有没有办法将窗口定义为唯一的?
我的意思是:当窗口已经打开时,我希望它获得焦点,而不是再次打开它。

现在我的菜单点击事件只是:

onMenuItemClick: function(){
    Ext.create('Mb.view.UniqueWindow').show()
},
4

2 回答 2

2

给它一个唯一的 id,然后在创建它之前验证它是否已经存在,否则就显示它,比如

function onMenuItemClick() {
var wnd = Ext.getCmp('myUniqueWindow');

if (!wnd) {
    wnd = Ext.create('Ext.window.Window', {
        id: 'myUniqueWindow',
        title: 'Unique Window',
        height: 200,
        width: 400,
        layout: 'fit',
        closeAction: 'hide', // This is really important otherwise closing it will destroy the window!
        items: { // Let's put an empty grid in just to illustrate fit layout
            xtype: 'grid',
            border: false,
            columns: [{
                header: 'Hello World'
            }], // One header just for show. There's no data,
            store: Ext.create('Ext.data.ArrayStore', {}) // A dummy empty data store
        }
    });
} else {
    wnd.getEl().highlight()
}

wnd.show();

}

您可以在此处查看工作示例

于 2013-10-17T07:54:57.733 回答
1

保存对它的引用:

if (!MyApp.someWin) {
    MyApp.someWin = new Ext.window.Window();
}
MyApp.someWin.show();
于 2013-10-17T07:45:16.757 回答