Extjs 无法删除组件(试图删除不存在的组件)
我有一个包含许多子组件的组件。在下面的代码中,我获取组件,然后使用“cls=ngp”获取其所有子组件。然后我对它们进行迭代,并尝试将它们从父面板中删除Extjs 无法删除组件(试图删除不存在的组件),extjs,extjs4,Extjs,Extjs4,我有一个包含许多子组件的组件。在下面的代码中,我获取组件,然后使用“cls=ngp”获取其所有子组件。然后我对它们进行迭代,并尝试将它们从父面板中删除 var ptp = Ext.ComponentQuery.query('partytoolpanel')[0]; //there is only ever one instance!! var comps = Ext.ComponentQuery.query('partytoolpanel [cls=ngp]') //6 obj
var ptp = Ext.ComponentQuery.query('partytoolpanel')[0]; //there is only ever one instance!!
var comps = Ext.ComponentQuery.query('partytoolpanel [cls=ngp]') //6 objects are returned here!!
comps.forEach(function (c) {
ptp.remove(c);
})
comp不会被删除,而是会收到以下消息:
试图删除不存在的组件。
Ext.container.container:remove接受组件的参数
去除cmp.remove()的用法不正确
我试图用小提琴来重复这个问题,当然,它非常有效:(
为什么我的案例不起作用?组件查询
partytoolpanel[cls=ngp]
将匹配该类的所有组件,这些组件位于组件下方层次结构的某个位置,而不只是直接子组件
但是container.remove
函数只能删除作为container
直接子级的组件
您应该从循环中的直接父级中删除组件:
Ext.each(comps, function (c) {
c.up().remove(c);
})
(我建议您使用
Ext.each(array,fn)
而不是array.forEach(fn)
,这样Sencha就可以处理任何浏览器问题。)可能是cls=ngp也在容器上吗?您可以尝试:var comps=Ext.ComponentQuery.query(“[cls=ngp]”,ptp)