ExtJs扩展了组件问题

时间:2013-10-16 10:36:54

标签: javascript extjs

我有一个扩展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();
}

但它的未经加工。

2 个答案:

答案 0 :(得分:2)

当您关闭窗口时,它会被破坏,因此您无法再次显示它。你需要:

  • 在窗口中设置closeAction属性
  • 每次在editFormCreate中创建窗口

答案 1 :(得分:1)

当您关闭Ext.Window时,您将处置它创建的DOM元素,因此无法再显示任何内容。在这种情况下显示之前,您需要实例化一个新的。