win.close()也关闭ExtJS中的消息框

时间:2013-08-30 06:22:45

标签: javascript jquery extjs extjs4.1

我有一个文本框。用户输入内容后,我会打开一个窗口并在窗口中显示数据。如果没有找到结果,我想关闭此窗口,然后显示一个消息框。有关更多信息,请参见下图。 enter image description here

在商店的load事件中,我编写了以下代码。

'load': function (thisStore, records, successful, eOpts) {
            if (successful) {
                if (records == null || typeof records[0] === "undefined") {

                    var msg = 'No records found for the given selection.';
                    MessageWindow.show('Information', msg, Ext.Msg.OK, Ext.Msg.INFO);
                }
            }
        }

现在关闭搜索结果窗口,我已将代码更改为:

'load': function (thisStore, records, successful, eOpts) {
            if (successful) {
                if (records == null || typeof records[0] === "undefined") {
                      var win = Ext.WindowManager.getActive();
                        if (win) {
                            win.close();
                        }
                    var msg = 'No records found for the given selection.';
                    MessageWindow.show('Information', msg, Ext.Msg.OK, Ext.Msg.INFO);
                }
            }
        }

但是当这段代码执行时,它也会关闭消息框(以及搜索窗口)。我只是想关闭搜索窗口。

请你好

2 个答案:

答案 0 :(得分:1)

首先,消息框(由Evan Trimboli解释)不是窗口的孩子。

我在我的本地extjs项目上测试了这种行为(创建一个Ext.Window,然后创建一个消息框)。这是一些代码

    openWindow: function() {
    this.initWindow();
    this.window.doLayout();
    this.window.show();

    Ext.MessageBox.alert( translate('error', 'general'), 'tag' );
    window.setTimeout(function() {                 
        BlueFork.Taskstatus.Creation.window.close();
        BlueFork.Taskstatus.Creation.window.destroy();
    }, 5000);
},

使用此代码,extjs将关闭窗口,而不是消息框。

使用

var win = Ext.WindowManager.getActive();
win.close();

将关闭消息框。

您是否已经调试过load事件的触发频率?

也许它触发了两次,第一次getActive返回消息框,第二次触发,返回窗口?两个窗户都关闭了。

喝彩!

答案 1 :(得分:-2)

我不认为可以在保留消息框的同时关闭窗口。您可以做的是窗口关闭后,显示一个带有相同文本的新消息框。