2011-11-05 5 views
1

У меня есть простая вкладка. Я хочу получить дочерние компоненты активной активной вкладки и уничтожить их и doLayout(). Следующий код не будет работать:Как получить дочерний компонент активной вкладки вкладки в extjs4?

Ext.getCmp('centertabpanel').getActiveTab().items.destroy(); 
+0

Вы используете Ext 3 или 4? – Ryan

+0

Вы получаете какие-либо ошибки? – Ryan

+0

@ryan Я не получаю ошибок и ничего не могу. Возможно, мои qs - как получить все дочерние элементы компонента и уничтожить их? –

ответ

2

Одна вещь, чтобы иметь в виду, что вкладки в TabPanel х в ExtJS просто нужно быть BoxComponent в ExtJS 3 или Component в ExtJS 4. Это означает, что вкладки не требуется содержать элементы детей. Тем не менее, если вы знаете, что ваш centertabpanel имеет вкладки с Containers, то у вас есть два варианта:

Если вкладка представляет собой контейнер, который имеет autoDestroy значение ИСТИНА (то есть по умолчанию), а затем просто использовать:

Ext.getCmp('centertabpanel').getActiveTab().removeAll(); 

Если вы хотите установить autoDestroy к ложным, то используйте следующий код:

Ext.getCmp('centertabpanel').getActiveTab().each(function(item, idx, len) { 
     item.destroy(); 
    }); 

.each() определяется на MixedCollection. Он выполнит функцию в первом параметре по всем дочерним элементам в порядке. Как побочная заметка, если вы вернете ложь внутри функции, то она остановит всю итерацию элементов.

Смежные вопросы