Extjs窗口关闭事件

时间:2013-03-13 10:51:44

标签: extjs4

我有一个带取消按钮的窗口,默认关闭[x]。当用户单击取消按钮时,它应检查特定标志并关闭窗口并更新db。我正在使用me.close(this);关闭取消按钮的窗口。当用户单击[x]时,它应检查相同的标志并更新db,然后关闭窗口。为了检查那个标志条件,我添加了一个监听器 这个听众工作正常。但是在添加监听器后,单击取消按钮,将关闭事件两次。所以db更新发生了两次。 有人可以建议我如何处理窗口的[x]关闭事件

Ext.define('MyApp.view.updateForm', {
    extend: 'Ext.window.Window',
    height: 600,
    width: 800,
    layout: {
        type: 'absolute'
    },
    title: 'Update Window',
    modal: true,
    initComponent: function() {

        Ext.applyIf(me, {
            items: [
                {
                    xtype: 'button',
                    id:'btnCancel',
                    handler    : function(){
                        if(flag == true){
                            //add to db
                            me.close(this);                                
                        }
                    }
                }]
        });    
        me.callParent(arguments);
    },

    listeners:{
        close:function(){
            if(flag == true){
                alert("close window");
                //add to db
            }
        }
    }

});

2 个答案:

答案 0 :(得分:6)

我已经完成了这个具有一些细微差别的确切实现,并且可以证明这完全符合预期。

这是我的代码:

 Ext.create('Ext.window.Window', {
      ...
      buttons:[
            {
                text:'Finish',
                handler:function () {
                    this.up('window').close();
                }
            }
       ],
       listeners:{
            close:this.someFunction,
            scope:this
        }
      ....

这完美无缺。这告诉我问题在你的代码的其他地方。

答案 1 :(得分:0)

一次修复只需在按下close按钮时调用Cancel即可。即按下(flag == true)时不执行Cancel检查。这不会导致close被调用两次。