gpt4 book ai didi

javascript - 扩展 : destroy and reopen modal window

转载 作者:行者123 更新时间:2023-11-30 07:02:53 28 4
gpt4 key购买 nike

我的页面标题上有一个首选项链接,可以打开一个模式窗口(它用于修改用户首选项,例如名称或密码)。

在取消按钮上我关闭了这个窗口,但是当我试图重新打开它时出现了这个 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 方法中指定表单,以便它绑定(bind)到该实例:

Ext.define('MyFoo', {
initComponent: function(){
this.items = new Ext.form.Panel(...);
this.callParent();
}
});

关于javascript - 扩展 : destroy and reopen modal window,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11380842/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com