ExtJs4学习(三)组件查找 ComponentQuery类
Extjs3.x:
ID:这就是所熟知的Ext.getCmp(“组件ID”),缺点是id重复导致出错。
ref:在EXTJS3中,所有的组件都会有一个ref属性,也就是reference的意思。这种方式是通过对组件的引用而得到组件对象。例如:ref:’mypanel’,但是这种方式的局限性在于,他只能查找不同层级之间的组件。也就是说A[a,b,c] C[d,e,f],这样的方式,使用ref非常方便,但如果是B[c,c,d]这样的方式,就会出现问题,因为在某一层级上,出项了两个相同的组件。
items.get(0):这种方式是通过首先获得组件中所有元素的数组,然后通过数组获得想要的组件对象,一般不会用到,因为非常不灵活,如果元素层级发生改变的话,将不能获取想要的组件,维护起来也非常困难。所以,这种方式,是用的最少的一种方式。
Extjs4.x:
在Extjs4.0中,依然可以沿用Extjs3.x中查找组件的方式,但是在Extjs4.0中,可以利用ComponentQuery,更方便找到对应组件。
1、 通过组件ID获取组件:"#组件ID”,如果通过这种方式,那么一定要记住在组件ID前添加#号。
- // 通过ID获得组件:#ID
- // var items = Ext.ComponentQuery.query('#btn2',panel);
// 通过ID获得组件:#ID
// var items = Ext.ComponentQuery.query('#btn2',panel);
2、 得到某一组件下所有的指定类型的组件:"panel>button”,这种方式是查找所有panel组件下的所有button组件。
- // 获得panel下的所有button,这个需要注意,button必须在panel下的第一层,如果中间跨层是找不到的,如:'viewport>button'是找不到button的,因为中间有一层panel
- // var items = Ext.ComponentQuery.query('panel>button',panel);
// 获得panel下的所有button,这个需要注意,button必须在panel下的第一层,如果中间跨层是找不到的,如:'viewport>button'是找不到button的,因为中间有一层panel
// var items = Ext.ComponentQuery.query('panel>button',panel);
3、 通过xtype:"treepanel”或".treepanel
- // 如果是多个类别,可以逗号隔开,如:'gridpanel,treepanel'
- var items = Ext.ComponentQuery.query('button',panel);
// 如果是多个类别,可以逗号隔开,如:'gridpanel,treepanel'
// var items = Ext.ComponentQuery.query('button',panel);
4、如果想获取所有button并且action为save的button,则可以使用"button[action=save] ",又或者获取所有panel,并且autoscroll属性为true的panel,则可以使用"panel[autoScroll=true]"
- // 通过组件的属性来查找
- // var items = Ext.ComponentQuery.query('button[id=btn2]',panel);
// 通过组件的属性来查找
// var items = Ext.ComponentQuery.query('button[id=btn2]',panel);
note:通过属性查找的时候中括号要紧挨着类名,如上据代码button和[id=btn1]之间不能有空格!
5、还有两种方式,是查找某一组件的子组件或上级组件,例如:
- 1、查找window下的form:win.down(“form”)
- 2、查找button的父组件window:button.up(“window”);
1、查找window下的form:win.down(“form”)
2、查找button的父组件window:button.up(“window”);
最明显的例子就是在extjs4.0使用MVC模式进行开发的时候,经常会在control控制中大量使用'viewport > panel',’edit button[action=save]’这类查找,当点击button进行数据保存的时候,会使用
- var win = button.up('window'),
- form = win.down('form'),
- record = form.getRecord(),
var win = button.up('window'),
form = win.down('form'),
record = form.getRecord(),
这类型的查找进行数据更新。
最后,在extjs4.0 MVC模式中,经常会碰到
- refs:[
- {ref: 'menu',selector: 'tablepanel'},
- {ref: 'feedList', selector: 'feedlist'},
- {
- ref: 'feedWindow',
- selector: 'feedwindow',
- autoCreate: true,
- xtype: 'feedwindow'
- }
- ]
refs:[
{ref: 'menu',selector: 'tablepanel'},
{ref: 'feedList', selector: 'feedlist'},
{
ref: 'feedWindow',
selector: 'feedwindow',
autoCreate: true,
xtype: 'feedwindow'
}
]
这样的书写方式。有很多人问我这是什么意思,查API也找不到。网络上也找不到,其实看extjs3.x中查找组件的方式,就会明白了。Refs是一个查找并匹配组件的集合,集合里面则指定了需要的操作,即查找一个组件,而找到的这个组件所匹配组件就是selector指定的,用上面代码一条
{ref: 'menu',selector: 'tablepanel'}
来稍做解释,即查找menu组件(其实是一颗树),点击树节点,结果将在'tablepanel'中渲染。这样解释可能比较含糊,那么就用官方例子做个解释吧。
{ref: 'feedData', selector: 'feedlist dataview'}。
这条的含义是查找'feedData',将'feedData'渲染在'feedlist的子组件dataview'上。
总结下:在ExtJS4中所有的组件都有一个query方法,这个方法就是ComponentQuery的实现。当然,如果还是不明白的话,就可以使用:
Ext.ComponentQuery.query("tabpanel");
Ext.ComponentQuery.query("#mytree");
实在extjs4.0实际使用过程中,如果要调用或查找组件,exjts会自动调用ComponentQuery的query方法来查找对应组件。
例子:
init:function(){
this.control({
'smsmenu': {//这里不必写全部的代码Ext.ComponentQuery.query(…);
itemmousedown: this.loadMenu
}
})
}
ExtJs4学习(三)组件查找 ComponentQuery类的更多相关文章
- Vue学习笔记-Vue.js-2.X 学习(三)===>组件化高级
(四) 组件化高级 1.插槽(slot)的基本使用 A:基本使用: <slot></slot> B:默认置:<slot><h1>中间可以放默认值< ...
- stenciljs 学习三 组件生命周期
stenciljs 组件包含好多生命周期方法, will did load update unload 实现生命周期的方法比价简单类似 componentWillLoad ....,使用typescr ...
- kuma 学习三 组件说明
当前官方已经提供了两种可选的运行模式 通用模式 kubernetes 模式 kuma 组件说明 kuma-cp kuma 的控制面板 kuma-dp kuma 的数据面板 enovy 提供sideca ...
- DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件
DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件 本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...
- day91 DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件
DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件 本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...
- day 89 DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件
DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件 本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...
- ExtJs4学习(五)最基本的Ext类
Ext类是ExtJs中最常见.最基础的一个类,它是一个全局对象,封装了所有类.单例和 Sencha 库所提供的实用方法. 大多数用户界面组件在一个较低的层次嵌套在命名空间中, 但是提供的许多常见的实用 ...
- day 83 Vue学习三之vue组件
本节目录 一 什么是组件 二 v-model双向数据绑定 三 组件基础 四 父子组件传值 五 平行组件传值 六 xxx 七 xxx 八 xxx 一 什么是组件 首先给大家介绍一下组件(componen ...
- Protocol Buffer学习教程之编译器与类文件(三)
Protocol Buffer学习教程之编译器与类文件(三) 1. 概述 在前面两篇中,介绍了Protobuf的基本概念.应用场景.与protobuf的语法等.在此篇中将介绍如何自己编译protobu ...
随机推荐
- javascript获取日期,年月,日
<SCRIPT LANGUAGE="JavaScript"> var myDate = new Date(); myDate.getYear(); ...
- 构建编译TVM方法
构建编译TVM方法 本文提供如何在各种系统上构建和安装TVM包的说明.它包括两个步骤: 1. 首先从C代码构建共享库( libtvm.so for linux, libtvm.dylib fo ...
- Non-Maximum Suppression,NMS非极大值抑制
Non-Maximum Suppression,NMS非极大值抑制概述非极大值抑制(Non-Maximum Suppression,NMS),顾名思义就是抑制不是极大值的元素,可以理解为局部最大搜索. ...
- PCB的IPC标准是什么
PCB的IPC标准是什么 印刷电路研究所成立于1957年,有6家印刷电路板制造商.1977年,许多电子公司与工控机联合起来,以实现电子电路的互连和封装.1998年,IPC协会创建了一个"连接 ...
- oracle表ddl审计
============= 表ddl 审计============== 1.table信息 SQL> select * from test; ID CUST_CREDIT_LIMIT TIME ...
- SpringBoot注解 + 详解
可以使用Ctrl + F搜索,也可以右侧目录自行检索 @SpringBootApplication 包含了@ComponentScan.@Configuration和@EnableAutoConfig ...
- Windows下Django的安装与项目创建
1.Django的安装命令:pip install django 2.如果要指定安装版本可用:pip install django==1.10.3 3.查看指定的安装库:pip show django ...
- ubuntu 如何更改 grub 界面主题
ubuntu 如何更改 grub 界面主题 安装 Liunx 系统的人都知道,系统引导是通过 grub 去引导的,但是 grub 这个界面就很单调,大概是这样子的 这肯定不符合我们潮流青年的审美的~ ...
- 【NX二次开发】Block UI 图层
属性说明 常规 类型 描述 BlockID String 控件ID Enable Logical 是否可操作 Group Logical ...
- 【NX二次开发】Block UI NXOpen::BlockStyler::BlockDialog
定义: NXOpen::BlockStyler::BlockDialog* theDialog; theDialog->PerformApply();//执行应用并重新启动对话框. theDia ...