0

これが私のウィンドウとその中のフォームです:

Ext.define('App.view.Users.Update', {
    extend: 'Ext.window.Window',
    title: 'User',
    width: 250,
    id: 'UpdateWindowUsers',
    defaultType: 'textfield',
    items: [{
        xtype: 'UpdateFormUsers'
    }],
    buttons: [
      { text: 'Save', id: 'submitUpdateFormButtonUsers'},
      { text: 'Cancel', id: 'cancelUpdateFormButtonUsers'},
    ]
});

Ext.define('App.view.Users.UpdateForm', {
    extend: 'Ext.form.Panel',
    alias: 'widget.UpdateFormUsers',
    layout: 'form',
    id: 'UpdateFormUsers',
    bodyPadding: 5,
    defaultType: 'textfield',
    items: [{
        fieldLabel: 'Id',
        name: 'id',
        hidden: true
    },{
        fieldLabel: 'username',
        name: 'username',
        allowBlank: false,
    },{
        fieldLabel: 'password',
        name: 'password',
        minLength : 5,
        allowBlank: false
    },{
        fieldLabel: 'Email',
        name: 'email',
        minLength : 5,
        vtype: 'email',
        allowBlank: false
    },{
        fieldLabel: 'first name',
        name: 'first_name',
        allowBlank: false
    },{
        fieldLabel: 'last name',
        name: 'last_name',
        allowBlank: false
    }],
});

これは、「 App / view / Users/Update.js 」という1つのファイルに含まれています。

だから、私は次のようにオブジェクトを作成しています:

var win = Ext.create('App.view.Users.Update');

ボタンで作成されています。しかし、ウィンドウをwin.close()閉じて、「境界線」レイアウト内の「タブ」を閉じて、同じウィンドウを再度作成するためのボタンを押すと、(コンソールで)オブジェクトを再作成していると表示されます。再び同じ「id」。すでにExt.AbstractManagerに登録されています。

オブジェクトを完全に破棄するにはどうすればよいですか?たぶんExt.AbstractManager.unregister(win); なにか?

さらにコードが必要な場合は、問題ありません。:) ありがとうございました。

PS

私は自分のウィンドウへの参照を次のように取得しています:

var window = Ext.ComponentQuery.query('#UpdateWindowUsers')[0];
window.close();

window.close()は実際にその中のパネルを破壊しますか?

4

1 に答える 1

0

解決しました。

this==コントローラー

if(this.isCreated){
    this.control(listeners);
}

isCreatedコントローラ内にプロパティを配置しました。

于 2013-05-03T16:41:17.407 に答える