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