[英]ExtJS: Destroy window with config 'closeAction' set to 'hide'
[英]Extjs : destroy and reopen modal window
我的页面标题上有一个首选项链接,该链接打开一个模式窗口(用于修改用户首选项,如名称或密码)。
在“取消”按钮上,我关闭了此窗口,但是当我尝试重新打开它时,出现了JS错误:
el.addCls.apply(el, arguments);
我是使用关闭此窗口的好方法还是问题出在其他地方?
这是我的代码:
// My window definition
Ext.define('jnotes.window.UserPreferences', {
extend: 'Ext.window.Window',
layout: 'fit',
modal: true,
renderTo: Ext.getBody(),
title: "<s:text name='user.preferences' />",
items: new Ext.form.Panel({
bodyPadding: 5,
waitMsgTarget: true,
method: 'POST',
fieldDefaults: {
labelAlign: 'right',
labelWidth: 85,
msgTarget: 'side'
},
defaultType: 'textfield',
items: [{
... // my fields
}],
buttons: [{
text: "<s:text name='action.save'/>",
handler: function() {
this.up('form').fireEvent('validate');
},
}, {
text: "<s:text name='action.cancel'/>",
handler: function() {
this.up('form').fireEvent('cancel');
}
}]
})
});
var preferencesWindow = null;
// Open my window
function displayPreferences() {
preferencesWindow = Ext.create('jnotes.window.UserPreferences');
var form = preferencesWindow.down('form');
form.addListener('validate', this.saveUser, this);
form.addListener('cancel', function() {
preferencesWindow.close();
preferencesWindow = null;
}, this);
form.load({
... // Loading data
});
preferencesWindow.show();
};
定义类的方式将创建该表单,并在该类的所有实例之间共享表单。 第一次销毁窗口时,表单会随之销毁,这就是结束了。
相反,您应该:a)指定一个表单配置对象:
items: {
xtype: 'form',
// ....
}
b)在initComponent方法中指定表单,以便将其绑定到该实例:
Ext.define('MyFoo', {
initComponent: function(){
this.items = new Ext.form.Panel(...);
this.callParent();
}
});
可能解决您问题的另一种解决方案是在窗口配置中指定closeAction:
closeAction: 'hide'
来自Extjs Docs的有关closeAction的更多信息:
单击关闭标题工具时要执行的操作:
可能的值:
'destroy' : remove the window from the DOM and destroy it and all descendant Components. The window will not be available to be redisplayed via the show method.
'hide' : hide the window by setting visibility to hidden and applying negative offsets. The window will be available to be redisplayed via the show method.
默认情况下,关闭操作值是destroy。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.