我有一个包含许多子组件的组件。在下面的代码中,我获取组件,然后使用“ cls = ngp ”获取其所有子组件。然后我迭代它们并尝试从父面板中删除它们。
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);
})
不删除 comps ,而是收到此消息:
尝试删除不存在的组件。 Ext.container.Container:remove接受组件的参数 去掉。 cmp.remove()使用不正确。
我试图在小提琴中复制这个问题,当然,它完美地运作:( https://fiddle.sencha.com/#fiddle/1irm
为什么我的案子不起作用?
答案 0 :(得分:3)
组件查询partytoolpanel [cls=ngp]
将匹配该类的所有组件,这些组件位于具有xtype: 'partytool'
的组件下面的层次结构中,而不仅仅是直接子项。
但container.remove
函数只能移除container
的直接子元素。
您应该从循环中的直接父级中删除组件:
Ext.each(comps, function (c) {
c.up().remove(c);
})
(我建议您使用Ext.each(array, fn)
代替array.forEach(fn)
,因此Sencha可以处理任何浏览器问题。)