Extjs4 Extjs窗口关闭事件
我有一个带有取消按钮和默认关闭[x]的窗口。当用户单击“取消”按钮时,应检查特定标志,并关闭窗口并更新数据库。我在利用我。关闭(这个);用于关闭“取消”按钮的窗口。当用户单击[x]时,它应该检查相同的标志并更新数据库,然后关闭窗口。为了检查该标志条件,我添加了一个侦听器 这个听众工作得很好。但是在添加侦听器之后,单击cancel按钮,close事件被调用两次。因此,数据库更新会发生两次。 有人能告诉我如何处理窗口的[x]关闭事件吗Extjs4 Extjs窗口关闭事件,extjs4,Extjs4,我有一个带有取消按钮和默认关闭[x]的窗口。当用户单击“取消”按钮时,应检查特定标志,并关闭窗口并更新数据库。我在利用我。关闭(这个);用于关闭“取消”按钮的窗口。当用户单击[x]时,它应该检查相同的标志并更新数据库,然后关闭窗口。为了检查该标志条件,我添加了一个侦听器 这个听众工作得很好。但是在添加侦听器之后,单击cancel按钮,close事件被调用两次。因此,数据库更新会发生两次。 有人能告诉我如何处理窗口的[x]关闭事件吗 Ext.define('MyApp.view.updateFor
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
}
}
}
});
一种解决方法是,当按下
取消
按钮时,只需调用关闭
。即,按下取消时,不要执行(标志==true)
检查。这不会导致调用两次close
。我已经完成了这个精确的实现,但有一些细微的差异,可以证明它完全按照预期工作
这是我的密码:
Ext.create('Ext.window.Window', {
...
buttons:[
{
text:'Finish',
handler:function () {
this.up('window').close();
}
}
],
listeners:{
close:this.someFunction,
scope:this
}
....
这很好用。这告诉我问题在代码的其他地方。这是不可能的,因为必须检查条件并相应地调用其他函数。我们还有别的办法处理吗?嗯,你有没有看到窗户的事件?我认为它提供了一个正确的位置来执行您的条件并返回true
或false
,这取决于您是否确实要关闭窗口。您好,我在关闭之前尝试过。即使我单击“取消”,close也会被调用两次。监听器:{beforeclose:function(){alert(“beforeclose”);if(flag==true){alert(“close window”);}}}您应该将写入db
部分仅放在一个位置;理想情况下,如果仅关闭窗口(即,如果要在关闭之前从返回true,请执行此操作)。你的代码有这样的结构吗?你能解决这个问题吗?