Extjs4中的ComponentQuery

要注意和DomQuery區分開




用來找特點的所有容器(Ext.container.Container)或是通過Ext.ComponentManager找特定的所有組件
1.當找組件的時候,相當於調用Ext.ComponentQuery.query()
可以接收的參數有
1)xtype
//找xypte爲panel的所有組件
var panelsArray = Ext.ComponentQuery.query('panel');
2)組件的itemId或id的屬性值
找所有id爲myct的panel組件,注意空格表示與操作(&&)
var panelsWithinmyCt = Ext.ComponentQuery.query('#myCt panel');
注:>表示直接,豆表示或操作
//表示id爲myct的直接子元素中panel的組件
var directChildPanel = Ext.ComponentQuery.query('#myCt > panel');
//表示gridpanel與treepanel組件
var gridsAndTrees = Ext.ComponentQuery.query('gridpanel, treepanel');
3)根據屬性查找
//表示如果組件有autoScroll屬性,那麼它就被先中了
var panelsWithinmyCt = Ext.ComponentQuery.query('component[autoScroll]');
var panelsWithinmyCt = Ext.ComponentQuery.query('panel[title="Test"]');
panel[title="Test"]
4)根據組件的一些表達式式的屬性,如果表達式的返回值爲true,那麼對應的組件就被先中
//如果組件的調用isDisabled()爲true的話,那麼此組件就被選中
var disabledFields = myFormPanel.query("{isDisabled()}");
5)僞類選擇器(Pseudo classes)
默認包含的有not,last,
//表示在document中找最後的panel組件
var panelsArray = Ext.ComponentQuery.query('panel:last');
//自定義的
Ext.ComponentQuery.pseudos.invalid = function(items) {
    var i = 0, l = items.length, c, result = [];
    for (; i < l; i++) {
        if (!(c = items[i]).isValid()) {
            result.push(c);
        }
    }
    return result;
};
var invalidFields = myFormPanel.query('field:invalid');
if (invalidFields.length) {
    invalidFields[0].getEl().scrollIntoView(myFormPanel.body);
    for (var i = 0, l = invalidFields.length; i < l; i++) {
        invalidFields[i].getEl().frame("red");
    }
}


2.查找容器的時候
可以用Ext.container.Container.query().此方法其實是以container爲根元素調用Ext.ComponentQuery.query
Ext.container.Container.down
Ext.container.Container.child
Ext.Component.up.




區分DomQuery
1.主要用於html與xml
2.有如下方式
1)可以用多選擇符Ext.select('div.foo,span.foo')
2)可以選擇查找的起始位置Ext.get('myEl').select('div.foo');
3)可以組查詢鏈Ext.select('div.foo[title=bar]:first');
4)有元素選擇符*,E,E F,E>F,E+F,E-F
5)可以根據屬性進行查找E[foo],E[foo=bar],E[foo^$*%!=bar]
6)支持僞類選擇E:first-child,E:last-child............
7)可根據CSS值進行E{display=none}
8)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章