2012-03-08 70 views
3

我想使用Ext.ComponentQuery.query()来查询包含某个名称路径的按钮的名称。如何通过包含部分字符串的组件名称查询组件

假设我有4名申报按钮为 'edit_btn', 'add_btn', 'add2_btn' 和 'edit2_btn'

然后,我使用的查询。 Ext.ComponentQuery.query("button[name='*edit*']");

我应该得到'edit_btn ' '和'edit2_btn'' 按钮。

Ext.ComponentQuery.query("button[name='*add*']");

我应该得到'add_btn '' 和'add2_btn'按钮。

或者我可以在Ext.ComponentQuery.query()命令中使用正则表达式?

如果可以,如何使用它?

+1

我不知道你是否能在组件查询中使用正则表达式,但你应该考虑更简单的解决方案,如添加一个额外的配置:buttonType:'编辑'或'添加',然后查询“按钮[buttonType =编辑]” – nscrob 2012-03-08 10:01:00

+0

嗯我也想过这个解决方案。但问题是[Netzke gem](https://github.com/skozlov/netzke-basepack)。 它会自动生成组件名称(一个坏名字,例如panel__admin_grid__adminform到您的堆栈组件级别)。 如果我为每个组件给它一个名字,那对我来说是一种痛苦。 无论如何,谢谢你的想法@nscrob :)。 – Rafaiel 2012-03-08 10:13:41

+0

@nscrob现在我明白你的意思了。 :( – Rafaiel 2012-08-27 04:18:40

回答

10

它没有执行。我查看了源代码,并且仅实现了相等运算符。 Hovewer很容易扩展它(参见ComponentQuery.html文件中的filterByAttribute),但是您必须从源代码复制所有代码,因为它以单例实现。

另一种方式是选择具有name属性和过滤后的按钮,如:

Ext.Array.filter(
    Ext.ComponentQuery.query('button[name]'), 
    function(c){ return /^add/.test(c.name); } 
) 
+0

谢谢!!它像一个魅力工作:D – Rafaiel 2012-03-09 05:09:31

相关问题