我有一个文本框。用户输入内容后,我会打开一个窗口并在窗口中显示数据。如果没有找到结果,我想关闭此窗口,然后显示一个消息框。有关更多信息,请参见下图。
在商店的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);
}
}
}
但是当这段代码执行时,它也会关闭消息框(以及搜索窗口)。我只是想关闭搜索窗口。
请你好
答案 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)
我不认为可以在保留消息框的同时关闭窗口。您可以做的是窗口关闭后,显示一个带有相同文本的新消息框。