2013-10-16 45 views
0

我有一个延伸FormPanel中:ExtJs的延伸部件问题

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 

我认为这是意味着我的窗口undifined。
如何扩展FormPanel以正确使用窗口?

UPDATE

函数来创建窗口:

  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(); 
} 

但其undifined。

回答

2

当你关闭该窗口时,它会被破坏,所以你不能再显示它。您需要:

  • 设置窗口
  • closeAction属性创建内部editFormCreate窗口每次
+0

我试图创建其创建窗口每次函数我点击'Edit'按钮像问题更新。但我得到的错误,功能未定。 –

+0

我没有看到您的问题的任何更新。您创建窗体时只创建窗口。 –

+0

Im在initComponent部分创建窗口becouse我也使用在窗口监听器中的initComponent中创建的网格。 –

1

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