我知道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]);
}
},
答案 0 :(得分:0)
截至目前,您执行以下操作:
您想要做的是以下内容:
history.back()
或类似内容)。或者,如果要完成并运行(并经过测试,所有可能情况下如何导航以及如何查找目标)的工作太多,您可以选择window.alert
对话框,看起来不太好,但同步工作。
或者你可以像我一样做:我只是在提出一个MessageBox后返回false
:&#34;你不能在编辑期间离开页面。请保存或中止帖子。&#34;