destroy()或close()实际上不会破坏对象? (Ext-JS 4.1.1a)

时间:2013-03-11 08:16:40

标签: javascript extjs

这是我的窗口和窗体:

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 ”。

所以,我正在创建一个对象:

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

它是用按钮创建的。但是当我用win.close()关闭窗口时,当我关闭“边框”布局中的“标签”时,当我按下按钮再次创建同一个窗口时,它会显示(在我的控制台中)我正在重新创建一个具有相同“id”的对象。它已经在Ext.AbstractManager中注册。

如何完全摧毁物体?也许用 Ext.AbstractManager.unregister(win); 某事?

如果您需要更多代码,没问题。 :)谢谢。

P上。 S上。

我正在通过以下方式获取对我窗口的引用:

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

window.close()实际上是否会破坏它内部的面板?

1 个答案:

答案 0 :(得分:0)

解决了它。

这==控制器

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

我将isCreated属性放在Controller中。