1

我希望使用组件查询功能来查找组件,而不是按属性值,而是按属性名称,其中属性名称本身应该是通配符。

所以我有一个具有以下配置的组件:

var component = Ext.create({
  xtype: 'container',
  foobar: 'something',
  foobar2: 'something else'
});

我希望能够找到所有具有以foobar开头的属性的元素。就像是

var els = Ext.ComponentQuery.query('[foobar*]');

我将如何实现这一目标?这是一个选项吗?

4

1 回答 1

0

我在文档中没有找到默认方式。一个可能的解决方案是自定义匹配器函数,它检查每个组件的以给定参数开头的属性。然后,您可以覆盖所有 ext 组件以具有此匹配器功能。(如果您已经在使用自定义组件,您可以制作一个mixin

例如:

    Ext.override(Ext.Component, {
        insensetivePropQuery: function(prop) {
            var matched = false;

            Ext.Object.each(this, function(key, value, myself) {
                if(Ext.String.startsWith(key, prop) === true) {
                    matched = true;
                    return false;
                }
            });
            return matched;
        }
    });

查询示例:

Ext.ComponentQuery.query('{insensetivePropQuery("foobar")}');

这是一个有效的 sencha fiddle 示例(使用 ExtJS 7.3.x Material):示例

于 2021-02-01T10:37:22.480 回答