2014-10-08 36 views
3

是否有方法來查詢xtype'yourxtype'的子組件? 例如,您有一個面板,並且此面板內部是位於工具欄上的自定義xtype。查詢具有特定xtype的子組件

findParentByType適用於查找,但不存在像findChildByType這樣的方法。 down方法僅適用於元素。 Ext.ComponentQuery是一個單例,但不適用於xtypes? 是否有另一種方式從組件查詢下來?

回答

4

組件查詢還有一個down方法,但它僅適用於容器。並且組件查詢在xtypes中查找不帶前綴的標識符(例如「#」,「。」等),如果xtype由Ext或您自己定義,則它沒有任何重要性。所以突出部分做:

var child = yourCt.down('yourxtype'); 
+0

感謝您的回答,但我所在的組件不是容器。在我的例子中,它的類型是Ext.grid.View這是否意味着無法從那裏查詢? – chriscrossweb 2014-10-09 18:52:30

+0

由於查詢是由xtype完成的,它可能發生在某些查詢中,我將引用兩個具有相同xtype的不同對象?這些衝突如何解決?也許你有一些鏈接在哪裏討論這個? (因爲我們可能有一些xtype的類,但是我們也可能有這個類的不同實例,並且使用xtype進行搜索似乎沒有區分實例嗎?) – 2016-07-27 18:50:12

7

yourCt.down會發現一個容器的第一個實例指定的類型,在組件的子女和後代。

yourCt.child將做同樣的事情,但限制在容器的直接子女。

yourCt.query將找到全部的容器下面的匹配組件,作爲數組。

yourCt.up會找到匹配容器的第一個父級

哦,並Ext.ComponentQuery.query可以採取一個可選對象,用作查詢的起點。

Ext.ComponentQuery

+0

感謝您的回答!使用yourCT,你的意思是一個容器類型爲yes的組件。因爲當我雙擊一個網格面板時,你可以訪問網格面板的視圖。 但是從那裏你沒有選擇查詢。你知道如何從網格視圖下行嗎? – chriscrossweb 2014-10-09 18:49:32

+0

如果它不是一個容器,那麼根據定義它不包含任何東西。 (除了Ext.container.Container之外,還有'容器' - 儘管如此,請參閱Queryable混合)。您需要從視圖回到包含網格並從那裏查詢。 – 2014-10-09 21:42:46

+0

感謝Robert的回覆,我做了你所說的。我試圖去findParentByType('gridpanel'),它重新調整了正確的網格面板。從那裏我嘗試了.down('mycustomxtype'),但它是空的。自定義xtype位於一個tbar {xtype:'mycustomxtype}我也嘗試了方法dockedItems,但數組是空的。真奇怪..它可能是一個錯誤?在ext js 3.4中,你必須使用getBottomToolbar方法,並且你可以查詢你的xtype – chriscrossweb 2014-10-10 09:28:36

1

你可以簡單的查詢中使用 Ext.ComponentQuery.query('myXtype')這將返回你的類型的所有實例的數組,這些都是基於關閉(並清楚地記錄了)。

2

這對我有效

這將返回提及xtype的實例數組。

Ext.ComponentQuery.query('fieldxtype') 

這僅返回,即如果我們有xtype.it的5個實例將返回的xtype

formpanel.down('fieldxtype') 

的只有第一個實例,如果你想獲得通過名稱的組件,您可以使用

單一實例
var componentObj = Ext.ComponentQuery.query('[name=checkboxName]'); 
相關問題