我有一个带取消按钮的窗口,默认关闭[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
}
}
}
});
答案 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
被调用两次。