重新打开窗口时,Ext.Window.show()保留旧参数值

时间:2014-02-26 15:49:03

标签: extjs extjs3

我有一个在函数内部调用的Ext.Window。我通过函数将参数传递给window。当我尝试使用新值重新打开window时,window会使用旧值执行操作。

这是我的代码 -

var Win;
LoadWindow = function (id) {
if (!Win) {
    Win = new Ext.Window({
        id: 'Pop-win',
        layout: 'fit',
        width: 650,
        modal: true,
        height: 450,
        closeAction: 'close',
        plain: true,
        items: [Panel],
        listeners: {
            close: function (w) {
               Win.removeAll();
            },
            show: function (p) {
                Store.reload({
                    params: {
                        'ID': id
                    }
                });
            }
        }
    });
}
Win.show();
}

PS:我使用extjs 3.4版本

1 个答案:

答案 0 :(得分:0)

移动Store.reload();部分退出节目听众。它引用的id总是指第一次创建窗口时。

如果此窗口没有经常使用,只需将其更改为使用 closeAction:'destroy'就可以了,这样您每次都可以生成一个新窗口。如果需要重用它,请在单独重新加载存储的窗口上编写一个辅助函数,然后调用Win.customStoreReload(),然后调用Win.show()。顺便说一下,closeAction:'close'也不是一个有效的closeAction。配置只能设置为“销毁”或“隐藏”。

LoadWindow = function (id) {
    if (!Win) {
        Win = new Ext.Window({
            id: 'Pop-win',
            layout: 'fit',
            width: 650,
            modal: true,
            height: 450,
            closeAction: 'hide', // either 'hide' or 'destroy'. 'close' is not a valid option
            plain: true,
            items: [Panel],
            listeners: {
                close: function (w) {
                    Win.removeAll();
                }
            }
        });
    }
    Store.reload({params: { 'ID': id }});
    Win.show();
}