5

我有一个带有取消按钮和默认关闭 [x] 的窗口。当用户单击取消按钮时,它应该检查特定标志并关闭窗口并更新数据库。我正在使用 me.close(this); 用于关闭取消按钮的窗口。当用户单击 [x] 时,它应该检查相同的标志并更新 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
            }
        }
    }

});
4

2 回答 2

8

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

这是我的代码:

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

这完美地工作。这告诉我问题在您的代码中的其他地方。

于 2013-03-13T23:16:27.427 回答
0

一种解决方法是在按下按钮close时简单地调用。即按下时Cancel不执行(flag == true)检查。Cancel这不会导致close被调用两次。

于 2013-03-13T11:06:25.367 回答