2012-03-08 39 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

相關問題