【发布时间】:2011-12-22 17:42:06
【问题描述】:
我有一个简单的标签面板。我想获取当前活动选项卡的子组件并销毁它们和doLayout()。以下代码不起作用:
Ext.getCmp('centertabpanel').getActiveTab().items.destroy();
【问题讨论】:
-
@ryan 我没有收到任何错误,也没有发生任何事情。可能我的问题是如何获取组件的所有子元素并销毁它们?
我有一个简单的标签面板。我想获取当前活动选项卡的子组件并销毁它们和doLayout()。以下代码不起作用:
Ext.getCmp('centertabpanel').getActiveTab().items.destroy();
【问题讨论】:
这里要记住的一点是,ExtJS 中 TabPanel 中的选项卡只需要在 ExtJS 3 中为 BoxComponent 或在 ExtJS 4 中为 Component。这意味着选项卡不需要保存子元素。但是,如果您知道您的centertabpanel 有带有Containers 的标签,那么您有两个选择:
如果您的选项卡是一个容器,其中 autoDestroy 设置为 true(这是默认设置),那么只需使用:
Ext.getCmp('centertabpanel').getActiveTab().removeAll();
如果要将autoDestroy 设置为false,则使用以下代码:
Ext.getCmp('centertabpanel').getActiveTab().each(function(item, idx, len) {
item.destroy();
});
.each() 在MixedCollection 上定义。它将按顺序对所有子项执行第一个参数中的函数。附带说明一下,如果你在函数内部返回 false,那么它将停止所有元素的迭代。
【讨论】: