Extjs 销毁div元素中的Ext组件

Extjs 销毁div元素中的Ext组件,extjs,Extjs,我有一个Ext.Component,它通过“renderTo”属性在div中呈现。除了呈现到的DOM元素之外,我没有任何其他对该组件的引用 如果我现在只是从DOM中删除这个元素,那么问题是会有一些元素存在(即带有类“x-Mask”的Mask元素) 是否有可能以干净的方式移除和销毁DIV中的所有外部组件,从而不会留下任何与它们相关的元素 另一种方法是首先查找呈现给此div的所有Ext.组件,然后自己删除它们。您需要(并且应该始终)通过调用destroy()销毁组件本身在组件级别。如果您有DOM元素

我有一个Ext.Component,它通过“renderTo”属性在div中呈现。除了呈现到的DOM元素之外,我没有任何其他对该组件的引用

如果我现在只是从DOM中删除这个元素,那么问题是会有一些元素存在(即带有类“x-Mask”的Mask元素)

是否有可能以干净的方式移除和销毁DIV中的所有外部组件,从而不会留下任何与它们相关的元素

另一种方法是首先查找呈现给此div的所有Ext.组件,然后自己删除它们。

您需要(并且应该始终)通过调用
destroy()销毁组件本身在组件级别。如果您有
DOM
元素,则可以访问
id
。用这个

Ext.getCmp('cmpIdValue').destroy();

组件应负责销毁
DOM
元素,并将另外清理所有托管侦听器。

如果确实没有对组件的引用(甚至没有id),则需要检查DOM元素的子元素是否属于某个组件

示例:

var childNodes = document.getElementById('your-dom-element').childNodes;
for (var i = childNodes.length-1, cmp; i >= 0; i--) {
    cmp = Ext.getCmp(childNodes[i].id);
    if (cmp) {
        cmp.destroy();
    }
}
ExtJS始终为组件提供一个id属性(如果您未指定,它将生成一个),并将其用作DOM元素下组件的id属性

因此,您只需遍历DOM元素(直接)子节点,并测试是否存在与子节点id关联的组件。如果找到一个组件,您可以调用,该组件将负责销毁DOM中的组件(以及所有子组件)