4

我用 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的面板以便以后销毁它们?...

4

2 回答 2

2

尝试这个:

var objArray = Ext.ComponentQuery.query("Ext.panel.Panel");

objArray包含所有面板对象。

现在运行一个for循环并销毁所有对象。

于 2013-08-02T11:50:35.600 回答
1

如果您使它们成为不同的变量(或您管理的数组),您可以单独销毁它们:

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();
}
于 2013-08-01T14:12:40.977 回答