0

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

但它是未定义的。

4

2 回答 2

2

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

  • closeAction在窗口上设置属性
  • 每次在editFormCreate里面创建窗口
于 2013-10-16T10:41:50.000 回答
1

当您关闭 aExt.Window时,您将处理它创建的 DOM 元素,因此不再显示任何内容。在这种情况下,您需要先实例化一个新的,然后再显示它。

于 2013-10-16T10:41:28.537 回答