我有一个扩展FormPanel:
Ext.ns('myapp');
myapp.StandartForm = Ext.extend(Ext.FormPanel, {
id: 'myForm'
,xtype: 'test'
,frame:true
,initComponent: function(){
var self = this;
this.editWindow = new Ext.Window({
id: 'editWSWin',
layout: 'fit',
title:this.editPanelTitle,
autoScroll:false,
width:300,
html:'hi'
});
var config = {
items: [{
layout:'column',
items:[this.grid],
buttons: [{
text: 'Edit',
id: "editBtn",
handler: this.editFormCreate,
scope: this,
hidden: this.editbuttonHidden,
disabled:true
}]
}]};
// apply config
Ext.apply(this, config);
Ext.apply(this.initialConfig, config);
myapp.StandartForm.superclass.initComponent.call(this);
}
, editFormCreate : function (){
this.editWindow.show();
}
});
Ext.reg(myapp.StandartForm.prototype.xtype, myapp.StandartForm);
在此面板中,按下按钮Edit
并显示窗口。关闭窗口后再次按Edit
按钮但出现错误:
TypeError: b.dom is undefined
我认为这意味着我的窗户是开膛的 如何将FormPanel扩展为能够正确使用窗口?
更新
创建窗口的功能:
function test(){
var editWindow = new Ext.Window({
id: 'editWSWin',
layout: 'fit',
title:this.editPanelTitle,
autoScroll:false,
width:300,
html:'hi'
});
return editWindow
}
并称之为:
, editFormCreate : function (){
test.show();
}
但它的未经加工。
答案 0 :(得分:2)
当您关闭窗口时,它会被破坏,因此您无法再次显示它。你需要:
closeAction
属性答案 1 :(得分:1)
当您关闭Ext.Window
时,您将处置它创建的DOM元素,因此无法再显示任何内容。在这种情况下显示之前,您需要实例化一个新的。