Javascript Extjs3组件层次结构-获取所有子组件
我面临以下情况 我有一个模板,在这里面 formpanel中有另一个选项卡Panel 再次放置哪些表单元素 这是formpanel的一部分。 没什么了不起的。基本上是 formpanel,每个都有一些“子窗体” 包含在选项卡面板的选项卡中 现在,我添加了代码,当用户单击工具栏中的按钮时,可以显示/启用每个子窗体/选项卡。但是为了验证跳过禁用选项卡中的所有formelements,我还需要单独禁用tabpanel中的每个表单字段,以便在提交时跳过验证 这就是麻烦开始的时候。假设在其中一个选项卡/子窗体中有一个字段集和另一个嵌套字段集。 如何获取选项卡/子窗体中包含的所有xtype:field元素Javascript Extjs3组件层次结构-获取所有子组件,javascript,extjs,Javascript,Extjs,我面临以下情况 我有一个模板,在这里面 formpanel中有另一个选项卡Panel 再次放置哪些表单元素 这是formpanel的一部分。 没什么了不起的。基本上是 formpanel,每个都有一些“子窗体” 包含在选项卡面板的选项卡中 现在,我添加了代码,当用户单击工具栏中的按钮时,可以显示/启用每个子窗体/选项卡。但是为了验证跳过禁用选项卡中的所有formelements,我还需要单独禁用tabpanel中的每个表单字段,以便在提交时跳过验证 这就是麻烦开始的时候。假设在其中一个选项卡/子
因此,基本上我要问的是如何获取选项卡的所有子组件,无论它们在组件层次结构中的深度如何?当我有一个收集所有子组件的方法时,就可以很容易地循环它们,并禁用从Ext.isXType('field')返回true的那些组件。。。但我不知道如何在引用包含组件时收集所有子组件。编辑使用Mchl答案中的
findByType
。我被Ext文档中的一个错误误导了
您可以使用
Ext.Container.prototype.cascade
级联(函数fn、[对象范围]、[数组参数]):外部容器
级联到组件/容器
此组件的继承权(称为
首先),调用指定的函数
每一个组成部分。范围(本)
函数调用的范围将是
提供或当前组件。这个
函数的参数将是
提供的参数或当前参数
组成部分。如果函数返回
如果在任何点上为false,则级联为
停在那根树枝上
我在测试这个答案时使用了这种方法:
var children = [];
this.cascade(function(cmp) {
if (cmp.isXType('field')) {
children.push(cmp)
}
});
子项
包含446个不同级别的字段实例。这样:
var componentsArray = container.findByType('component');
甚至这个
var componentsArray = container.findBy(function(c) {return true});
(应该更快)
但是,应注意,这不会返回
tbar
,bbar
,按钮属性的Ext.Panel
后代中的组件。文档对此有误导性。它说“查找组件…”,但返回类型是数组。您是否验证了一种方法或另一种方法?它实际上返回一个组件数组。查看代码,它返回Ext.Container.findBy()
的结果,实际上,var componentsArray=Container.findBy(函数(c){return true})代码>也应该工作:D