Ext.Msg.Confirm - 等待用户响应?
Ext.Msg.Confirm - wait for a user response?
我了解 Ext.Msg.Confirm 是异步的,如果您不提供回调将继续。
下面是我的代码 - 如果用户在编辑模式下尝试从当前屏幕导航,则会调用此代码。我将回调传递给该方法 - fn 是我的回调事件,但无论我如何对此进行编码,逻辑都会继续导航离开页面。有没有办法在用户在确认框中选择是或否之前停止传播?
这是确认代码:
displaySaveConfirmation: function(fn) {
var title = 'Do you want to Save?'
var msg = 'You are currently Editing Standard Text. Would you like to save your changes?'
var box = Ext.Msg.confirm(title, msg, function(buttonId, value) {
if (buttonId === 'no'){
fn.call();
} else {
return false;
}
}, this );
box.setZIndex(400);
box.setCls('alert-box');
var buttons = Ext.ComponentQuery.query('button', box);
for (var i=0; i<buttons.length; i++) {
if (buttons[i].getItemId()=="no")
buttons[i].addCls('blackBtn');
else if (buttons[i].getItemId()=="yes")
buttons[i].addCls('blueBtn');
this.addReleaseEvent(box, buttons[i]);
}
},
截至目前,您执行以下操作:
- 事件被触发
- 您打开消息框
- 你的函数 returns,它没有 return "false"。
- 浏览器在用户单击 "yes" 或 "no" 之前导航离开。
您要做的是:
- 事件被触发
- 您打开消息框
- 您的函数 return 错误。
- 浏览器没有离开。
- 用户点击"yes"或"no"。
- 如果答案是 "yes",您手动导航到之前请求的目标页面(例如关闭浏览器 window,使用
history.back()
或类似的)。
或者,如果启动和 运行(并测试了所有可能的情况下如何导航和如何找到目标)的工作量太大,您可以选择 window.alert
对话框,它看起来不太好,但可以同步工作。
或者你可以像我一样做:我只是 returned false
在调出一个 MessageBox 之后,上面写着:"You cannot leave the page during edit. Please save or abort the post."
我了解 Ext.Msg.Confirm 是异步的,如果您不提供回调将继续。
下面是我的代码 - 如果用户在编辑模式下尝试从当前屏幕导航,则会调用此代码。我将回调传递给该方法 - fn 是我的回调事件,但无论我如何对此进行编码,逻辑都会继续导航离开页面。有没有办法在用户在确认框中选择是或否之前停止传播?
这是确认代码:
displaySaveConfirmation: function(fn) {
var title = 'Do you want to Save?'
var msg = 'You are currently Editing Standard Text. Would you like to save your changes?'
var box = Ext.Msg.confirm(title, msg, function(buttonId, value) {
if (buttonId === 'no'){
fn.call();
} else {
return false;
}
}, this );
box.setZIndex(400);
box.setCls('alert-box');
var buttons = Ext.ComponentQuery.query('button', box);
for (var i=0; i<buttons.length; i++) {
if (buttons[i].getItemId()=="no")
buttons[i].addCls('blackBtn');
else if (buttons[i].getItemId()=="yes")
buttons[i].addCls('blueBtn');
this.addReleaseEvent(box, buttons[i]);
}
},
截至目前,您执行以下操作:
- 事件被触发
- 您打开消息框
- 你的函数 returns,它没有 return "false"。
- 浏览器在用户单击 "yes" 或 "no" 之前导航离开。
您要做的是:
- 事件被触发
- 您打开消息框
- 您的函数 return 错误。
- 浏览器没有离开。
- 用户点击"yes"或"no"。
- 如果答案是 "yes",您手动导航到之前请求的目标页面(例如关闭浏览器 window,使用
history.back()
或类似的)。
或者,如果启动和 运行(并测试了所有可能的情况下如何导航和如何找到目标)的工作量太大,您可以选择 window.alert
对话框,它看起来不太好,但可以同步工作。
或者你可以像我一样做:我只是 returned false
在调出一个 MessageBox 之后,上面写着:"You cannot leave the page during edit. Please save or abort the post."