ExtJSMessageBox似乎不像Javascript alert(..)那样阻塞。我想显示一个弹出窗口,然后调用 AJAX 调用,在此之后它将关闭窗口。
如果我像这样调用show方法,那么...
//Alert Box :
var alertBox = Ext.create('Ext.window.MessageBox');
var config = {
title : 'Title',
closable: true,
msg: 'Message',
buttons: Ext.Msg.OK,
buttonText: { ok: EML.lang.buttons.ok },
modal: true
};
alertBox.show(config);
//callback
Ext.Ajax.request({
url: someURL,
method: 'POST',
callback: function (options, success, response) {
//do some stuff
self.up('window').destroy();
}
})
..不显示弹出窗口,但父窗口已关闭。
如果我使用标准的Javascriptalert,则警报将被阻止。单击“确定”按钮后,将执行回调,然后窗口关闭。
//Alert Box :
alert('asdf')
//callback
Ext.Ajax.request({
url: someURL,
method: 'POST',
callback: function (options, success, response) {
//do some stuff
self.up('window').destroy();
}
})
- 为什么MessageBox不阻止?
- 我能做些什么来解决这个问题?
- MessageBox是否需要知道要阻止的父窗口?
1条答案
按热度按时间368yc8dk1#
它不会阻塞,因为自定义javascript代码不支持阻塞。正如chrome控制台告诉我们的,
并且本机代码可能会阻止执行。
在ExtJS中,您可以为消息框编写一个回调,如下所示:
如果这样的回调是深度嵌套的,我倾向于将回调扁平化,如下所示:
在较新版本的ExtJS中,您可以 checkout
Ext.Promise
,但在ExtJS 4.1中则不行。