如何使用 ExtJS 销毁对象的所有实例?
Posted
技术标签:
【中文标题】如何使用 ExtJS 销毁对象的所有实例?【英文标题】:How to destroy all instances of a object with ExtJS? 【发布时间】:2013-08-02 11:44:45 【问题描述】:我使用 ExtJS 框架创建了 2 个类似的面板(我知道这不是最好的方法):
var panel = Ext.create("Ext.panel.Panel",
title: "first panel",
width: 400,
height: 250,
renderTo: Ext.getBody(),
html: "test 1"
);
panel = Ext.create("Ext.panel.Panel",
title: "second panel",
width: 400,
height: 250,
renderTo: Ext.getBody(),
html: "test 2"
);
现在我的浏览器中有 2 个面板。现在如果我这样做:
panel.destroy();
它只破坏最后一个。 所以我的问题是:我怎样才能摧毁第一个面板?有没有一种方法可以包含浏览器中的所有面板?我是否每次都存储 ID 的面板以便以后销毁它们?...
【问题讨论】:
【参考方案1】:试试这个:
var objArray = Ext.ComponentQuery.query("Ext.panel.Panel");
objArray
包含所有面板对象。
现在运行for
循环并销毁所有对象。
【讨论】:
感谢您的宝贵帮助,这正是我想要的!【参考方案2】:如果您将它们设为不同的变量(或您管理的数组),您可以单独销毁它们:
var panel1 = Ext.create("Ext.panel.Panel",
...
);
var panel2 = Ext.create("Ext.panel.Panel",
...
);
panel1.destroy();
panel2.destroy();
或者这个:
var panels = [];
var panels[0] = Ext.create("Ext.panel.Panel",
...
);
var panels[1] = Ext.create("Ext.panel.Panel",
...
);
for (var i=0; i<panels.length; i++)
panels[i].destroy();
【讨论】:
感谢您的回答凯文德。我在发帖之前已经尝试过这种方法。您知道销毁实例的 2 个“实例”的另一种方法吗? @RémyJUANES,除非您将包含面板的变量重新分配给其他东西,否则此代码没有理由不起作用。此代码已经过测试并按预期工作。 是的,你是对的,我很紧张地说你的代码不起作用,我只是在寻找另一种方法来做到这一点,以了解更多关于 ExJs 的信息。以上是关于如何使用 ExtJS 销毁对象的所有实例?的主要内容,如果未能解决你的问题,请参考以下文章
ExtJs 4:如何在一个请求中发送所有修改、新和删除的记录?
如何销毁 QPainter 对象/摆脱 drawText() 内存泄漏?