我有一个Ext.window,我希望在用户尝试关闭窗口之前显示确认消息,方法是单击窗口中的关闭按钮或顶部的默认[x]按钮或Esc键。为此目的,我有以下代码。
closeWindow: function(){
Ext.Msg.show({
title: 'Confirm or Cancel',
msg: 'Are you sure you want to close this window?',
buttonText: {ok: 'Yes', cancel: 'No'},
icon: Ext.Msg.WARNING,
scope: this,
width: 400,
fn: function(btn, text){
if (btn == 'ok'){
clearInterval(this.myIntervalTimer);
this.cleanEvents(null, null, this.identifier);
this.view.destroy();
} else {
return;
}
}
});
}
当我单击窗口中的“关闭”按钮时,这段代码可以正常工作。但是当我单击默认关闭[x]或esc键时,由于extjs的异步性质,窗口会在确认消息显示之前消失。当显示确认消息时,没有窗口,因此它变得无关紧要。我也试过使用beforeClose事件,但没有用。
有关如何在extjs中实现这一目标的任何建议或想法?感谢...
答案 0 :(得分:4)
请测试以下内容,它对我有用:
Ext.create('Ext.window.Window', {
title:'Test'
,width:400
,height:300
,autoShow:true
,listeners:{
beforeclose:function(win) {
if(win.closeMe) {
win.closeMe = false;
return true;
}
Ext.Msg.show({
title:'Close confirmation'
,msg:'Really close?'
,buttons:Ext.Msg.YESNO
,callback:function(btn) {
if('yes' === btn) {
win.closeMe = true;
win.close();
}
}
})
return false;
}
}
});