extjs - 如何将窗口定义为唯一?

时间:2013-10-17 07:36:11

标签: extjs extjs4.2

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

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

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

2 个答案:

答案 0 :(得分: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();

}

您可以看到working sample here

答案 1 :(得分:1)

保存对它的引用:

if (!MyApp.someWin) {
    MyApp.someWin = new Ext.window.Window();
}
MyApp.someWin.show();