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

を閉じるとExt.Window、作成された DOM 要素が破棄されるため、何も表示されなくなります。この場合、表示する前に新しいインスタンスを作成する必要があります。

于 2013-10-16T10:41:28.537 に答える