ExtJS。隐藏容器中的所有组件

Posted

技术标签:

【中文标题】ExtJS。隐藏容器中的所有组件【英文标题】:ExtJS. Hide all components within a container 【发布时间】:2013-06-26 07:35:27 【问题描述】:

我有一个窗口,我在其中渲染许多组件,如面板等。

有没有一种方法可以隐藏窗口中包含的所有组件而不必单独隐藏它们?类似的,

Ext.getComponent('myWindow').hideAllComponents();

我使用的是 extjs 3.4。

【问题讨论】:

为什么不把所有组件都放在一个容器里,然后把它隐藏起来。 【参考方案1】:

如果我理解正确,您不想隐藏窗口,而是隐藏窗口中的元素。所以可以这样做:

// get window, get element, get all direct children with css selector '*'
var children = Ext.get('myWindow').getEl().down('*')

// hide them all
Ext.each(children,function(child)child.hide(););

【讨论】:

当窗口被隐藏时,我想隐藏窗口中包含的所有子项。我使用了类似于您建议的方法来隐藏窗口的孩子,但我想知道是否有一种简单、快速和更好的方法来做到这一点。在这种方法中,您仍然需要手动和单独隐藏孩子。【参考方案2】:

尝试为您的容器设置样式

Ext.get('myWindow').setStyle('display','none');

【讨论】:

我在 Extjs 3.4 的文档中找不到 setStyle 函数。【参考方案3】:

假设myWindow 是对您的窗口的引用,您可以使用:

Ext.each(myWindow.items.items, function(cmp)  cmp.hide(); );

其他答案提到Ext.get,但它检索的是 DOM 元素,而不是组件。

另见:ExtJS hide all child components

【讨论】:

以上是关于ExtJS。隐藏容器中的所有组件的主要内容,如果未能解决你的问题,请参考以下文章

Extjs 4 为啥不允许隐藏所有可隐藏的列?

extjs 为面板添加组件,这个组件可以是啥

如何隐藏组合中的项目 - Extjs 4.1

如何从 extjs4.1 中的应用程序控制器调用视图

如何在 ExtJs 中的回调函数后更改隐藏值

ExtJS 4 中的自定义溢出处理程序实现