迭代特定类型的 Ext JS 表单组件

Iterate Over Ext JS Form Components of Particular Type

我有一个 Ext.form.Panel,其中包含 "typical" 个字段的混合:textfieldcomboboxcheckboxfield 等。每个 combobox 都有 forceselection : true,因此 - 一个关联的商店。我的目标是遍历 Panel 中的每个字段,确定它是否是 combobox,然后执行 "some stuff" - 即加载关联的商店。

两道题(每道题的手都握在上面):

  1. 是否可以 Ext.each 覆盖面板上的特定 "type" 组件?或者,以稍微不同的方式解决问题:是否可以 select 一组匹配特定类型的组件?
  2. 如果不是,我如何在 运行 时确定组件的类型?

目前,我正在使用一个标识符列表,iterating 每个标识符,运行 对面板进行查询,例如

var comboBoxIds : [
    'dogs',
    'cats',
    'fish'
];

Ext.each(comboBoxIds, function(comboId) {
    var comboBox = panel.queryById(comboId);

    //....

});

以上是一个非常简单的减少。

使用query方法得到你需要的,然后遍历数组:

var combos = panel.query('combobox[forceSelection=true]');

for (var i = 0; i < combos.length; i++) {
    var combo = combos[i];
    ...
}

有关 ComponentQuery 语法的更多信息:http://docs-origin.sencha.com/extjs/5.1/5.1.0-apidocs/#!/api/Ext.ComponentQuery