EXT组件选择器:
1,获取一个单一的组件对象可以使用sencha touch中的get方法:Ext.getCmp(),这个方法是间接的调用了Ext.ComponentManager.get()方法;返回的是一个对象;
2,获取一个组件的集合可以使用Ext.ComponentQuery.query()方法,返回的是一个符合条件的组件集合;
1,query方法,中的查询条件跟jq的查询方法一致,id选择器,样式选择器等,值得一提的是:该方法可以自己定义选择器:
//定义一个筛选的方法 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 = Ext.ComponentQuery.query('field:invalid', myFormPanel);
3,组件的查询,也是讲究效率的,如果要查找一个容器中的组件,直接的调用query方法也是非常影响查询效率的,可以在查询的参数中添加一个查询范围:
var btnRefresh = Ext.ComponentQuery.query('#btnRefresh', container);
简单一点的写法可以使用:
var btnRefresh = container.query('#btnRefresh');
说到这里,就不能不提提Container类中用于查询组件的几个方法了。Container中的query方法、down方法、child方法和up方法,都是基于组件选择器而实现的组件查询方法,调用这些方法,可以很轻松地获取想要的组件。这里用一张表格列出这些方法的区别:
方法 | 查询范围 | 返回值 |
query | 后代组件 | 所有符合条件的组件集合 |
down | 后代组件 | 第一个符合条件的组件 |
child | 子组件 | 第一个符合条件的组件 |
up | 祖先组件 | 第一个符合条件的组件 |
容器的组件查询方法对比