Extjs:在关闭窗口之前需要确认消息

时间:2014-09-16 20:55:19

标签: extjs window confirmation

我有一个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中实现这一目标的任何建议或想法?感谢...

1 个答案:

答案 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;
            }
        }
    });