组件创建了,就有方法找到这些组件。在DOM、Jquery都有各自的方法查找元素/组件,ExtJS也有自己独特的方式查找组件、元素。本次从全局查找、容器内查找、form表单查找、通用组件等4个方面介绍组件的查找方式。

目录

1. 全局查找方式

2. 容器内查找

3. form查找子组件

4. 通用组件查找方式

1. 全局查找方式

全局查找方式指在整个ExtJS框架中查找组件。

1.1 Ext.getCmp(id) :返回此id对应的组件

说明:此方法是在所有组件中查找匹配此id的组件。

参数

①id {string} :组件的id。

返回值

{Ext.Component} :返回匹配的组件;若没有找到返回undefined。

示例

// 获取id为reg_form的组件
var form = Ext.getCmp('reg_form');

1.2 Ext.ComponentQuery.query(selector, [root]) :返回一个符合匹配的组件数组

参数

①selector {string} :匹配规则,可以为组件的xtype、id(前缀加上#)、属性以及Css Selector。

②root {Ext.container.Container} 可选:指定在哪个容器内进行查询。 若省略,将进行全局查找。

返回值

{Ext.Component[]} :返回匹配的组件数组;若没有找到匹配的,返回一个空数组。

示例

// 1.xtype查找:获取所有文本输入框(xtype:textfield)
var textfieldArray = Ext.ComponentQuery.query('textfield'); // 2.id查找
var formArray = Ext.ComponentQuery.query('#query_form'); // 3.xype+属性查找:指定from组件,并且title属性的值为'表单'
var formArray = Ext.ComponentQuery.query('form[title=表单]'); // 4.属性查找:title属性的值为'表单'的组件
var formArray = Ext.ComponentQuery.query('[title=表单]');

2. 容器内查找

下面的几个方法是在容器类型组件内查找对应的子组件或子容器。

2.1 containerObj.child(selecter) :返回第一个符合匹配的第一层子组件

说明:此方法是在容器内的第一层子组件内进行查找。

参数

①selector {string} :匹配规则,可以为组件的xtype、id(前缀加上#)、属性以及Css Selector。

返回值

{Ext.Component} :返回匹配的组件;若没有找到匹配的,返回null。

示例

// 返回form表单下的第一层 xtype为fieldcontainer 的子组件
var fc = Ext.getCmp('query_form').child('fieldcontainer');

2.2 containerObj.down([selecter]) :返回第一个符合匹配的子组件

参数

①selector {string} 可选:匹配规则,可以为组件的xtype、id(前缀加上#)、属性以及Css Selector。若省略,返回第一个子组件。

返回值

{Ext.Component} :返回匹配的组件;若没有找到匹配的,返回null。

示例

// 返回form表单下的第一个 xtype为textfield 的子组件
var txt = Ext.getCmp('query_form').down('textfield');

2.3 containerObj.query([selecter]) :返回一个组件数组,包含当前容器内符合匹配规则的子组件

参数

①selector {string} 可选:匹配规则,可以为组件的xtype、id(前缀加上#)、属性以及Css Selector。若省略,返回所有子组件。

返回值

{Ext.Component[]} :返回匹配的子组件数组;若没有找到匹配的,返回一个空数组。

示例:

// 返回form表单下的所有 xtype为textfield 的子组件
var txtArray = Ext.getCmp('query_form').query('textfield');

2.4 containerObj.queryBy(fn, [scope]) :返回一个组件数组,包含当前容器内符函数条件的子组件

参数

①fn {function} :匹配函数;容器内的每个组件都会调用此函数,函数内返回false不会出现在返回的组件集合里。

②scope {object} 可选:作用域。 若省略,为调用的子组件。

返回值

{Ext.Component[]} :返回匹配的子组件数组;若没有找到匹配的,返回一个空数组。

示例

// 返回表单内有内容的组件
var cpArray = Ext.getCmp('query_form').queryBy(function(cp){
if(cp.getValue){
return cp.getValue().length>0;
}
return false;
})

注意:fn函数只有返回false时,此组件才不加入返回的组件数组里;return undefined、null 这种都是会加入到组件数组里。

2.5 containerObj.queryById(id):返回一个容器内符合此id的子组件

参数

①id {string} :组件的id,不需要加前缀'#';等同于containerObj.down('#' + id)。

返回值

{Ext.Component} :返回匹配的子组件;若没有找到匹配的,返回null。

示例

// 获取表单内Id为 A1 的组件
var cp = Ext.getCmp('query_form').queryById('A1');

3. form查找子组件

并不是所有的组件都会赋值Id,在form表单中的组件大多都是采用name属性。

3.1 formObj.getForm().findField(id/name) :返回form表单内指定id或name的表单组件

参数

①id/name {string} :组件的id或name。

返回值

{Ext.form.field.Field} 返回匹配的表单组件;若没有找到,返回null。

示例

登录form表单:

Ext.create('Ext.form.Panel', {
id:'login_form',
title:'登录',
items:[
{ xtype: 'textfield', name: 'loginName',fieldLabel:'登录名' },
{ xtype: 'textfield', name: 'loginPwd',fieldLabel:'密码' },
]
})

  

获取值

Ext.getCmp('login_form').getForm().findField('loginName'); // 获取登录名组件
Ext.getCmp('login_form').getForm().findField('loginPwd'); // 获取密码组件

4. 通用组件查找方式

通用组件查找方式指的是所有组件都支持的查找方式,主要有以下几种:

① up() : 向上查找祖先容器。

② previousSibling() :向上查找兄弟组件(同一层级)。

③ nextSibling() :向下查找兄弟组件(同一层级)。

4.1 componentObj.up([selecter]) :返回匹配的祖先容器

参数

①selector {string} 可选:匹配规则,可以为组件的xtype、id(前缀加上#)、属性以及Css Selector。若省略,返回第一个上级父容器。

返回值

{Ext.container.Container} :返回匹配的父容器;若没有找到匹配的,返回null。

4.2 componentObj.previousSibling([selecter]) :返回向上查找到的兄弟组件(同一层级)

说明:可简写为 prev()。

参数

①selector {string} 可选:匹配规则,可以为组件的xtype、id(前缀加上#)、属性以及Css Selector。若省略,返回第一个上级父容器。

返回值

{Ext.Component} :返回匹配的组件;若没有找到匹配的,返回null。

4.3 componentObj.nextSibling([selecter]) :返回向下查找到的兄弟组件(同一层级)

说明:可简写为next()。

参数

①selector {string} 可选:匹配规则,可以为组件的xtype、id(前缀加上#)、属性以及Css Selector。若省略,返回第一个上级父容器。

返回值

{Ext.Component} :返回匹配的组件;若没有找到匹配的,返回null。

示例

var txt = Ext.getCmp('textfield_B3');

// 1.上级容器
var fc = txt.up(); // => fieldcontainer_B
var form = txt.up().up(); // => form表单 // 2.向上获取同级组件
var txtB2 = txt.prev(); // => textfield_B2
var txtB1 = txt.prev().prev(); // => textfield_B1 // 3.向下获取同级组件
var txtB4 = txt.next(); // => textfield_B4
var txtB5 = txt.next().next(); // => textfield_B5
End
菜单加载中...

ExtJS 4.2 组件的查找方式的更多相关文章

  1. ExtJS 4.2 组件介绍

    目录 1. 介绍 1.1 说明 1.2 组件分类 1.3 组件名称 1.4 组件结构 2. 组件的创建方式 2.1 Ext.create()创建 2.2 xtype创建 1. 介绍 1.1 说明 Ex ...

  2. extjs每一个组件要设置唯一的ID

    extjs每一个组件要设置唯一的ID,否则会造成各种错误 EXTJS基本上是靠ID来识别组件的,假如你在panel1中有个ID:"keyword"的textfield,而panel ...

  3. 使用Net.Mail、CDO组件、JMail组件三种方式发送邮件

    原文:使用Net.Mail.CDO组件.JMail组件三种方式发送邮件 一.使用Net.Mail 需要服务器认证,大部分服务器端口为25. { MailMessage mailMsg = mailMs ...

  4. VSTO中Word的查找方式

    VSTO中Word的查找方式 前言 使用C#在VSTO开发Word插件的过程,经常需要对文档中的内容进行查找和替换.在Word中进行文本的查找替换,和一般对纯文本的查找替换却不太一样.因为Word文档 ...

  5. <转>Python中的新式/经典类的查找方式

    在学习到深度和广度的时候,懵了很久.后来看到这篇文章,恍然大悟.写的很好.特意转过来. 经典类: 只要有父类, 就会沿着一直找, 即使已经找过了~ 新式类: 在类继承的多个类拥有共同父类的情况下, 会 ...

  6. 使用FindAncestor查找方式绑定且不需要使用datacontext

    原文:使用FindAncestor查找方式绑定且不需要使用datacontext <UserControl x:Class="QuJiao.AnimationVideoPlayer&q ...

  7. 实用ExtJS教程100例-007:ExtJS中Window组件最小化

    在上一节中我们演示了如何使用ExtJS的Window组件,这篇内容中我们来演示一下如何将窗口最小化. 要让ExtJS标题栏中显示最小化按钮并不麻烦,只需要设置 minimizable: true 即可 ...

  8. vue组件之间传值方式解析

    vue组件之间传值方式解析一.父组件传到子组件 1.父组件parent代码如下: <template> <div class="parent"> <h ...

  9. 【ExtJS】自定义组件datetimefield(二)

    接上[ExtJS]自定义组件datetimefield(一) 第三步:添加按钮事件绑定,获取选定的时间 privates:{ finishRenderChildren: function () { v ...

随机推荐

  1. mapreduce多文件输出的两方法

    mapreduce多文件输出的两方法   package duogemap;   import java.io.IOException;   import org.apache.hadoop.conf ...

  2. SQLSERVER走起 APP隆重推出

    SQLSERVER走起 APP隆重推出 为方便大家查看本微信公众以前推送的文章,QQ群里面的某位SQLSERVER重度爱好者开发了<SQLSERVER走起>的APP 以供大家一起交流 网页 ...

  3. JavaScript 中的数据类型

    Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...

  4. AES加密

    package com.edu.hpu; import java.math.BigInteger; import java.security.MessageDigest; import java.se ...

  5. 【NLP】蓦然回首:谈谈学习模型的评估系列文章(一)

    统计角度窥视模型概念 作者:白宁超 2016年7月18日17:18:43 摘要:写本文的初衷源于基于HMM模型序列标注的一个实验,实验完成之后,迫切想知道采用的序列标注模型的好坏,有哪些指标可以度量. ...

  6. [systemtap手记]debian体系安装过程

    Debian体系,本人测试用机 Ubuntu 11.10 uname -r 查看原本的内核版本为 3.0.0-12-generic 第一步: 安装systemtap包 $ sudo apt-get i ...

  7. BPM流程中心解决方案分享

    一.需求分析 在过去办公自动化的浪潮中,很多企业已经实施了OA流程,但随着客户的发展和对流程管理的越来越重视, 客户对流程应用需求越来越深 入,您可能面临以下需求: 1.流程功能不能满足需求,包括流程 ...

  8. 【SAP业务模式】之ICS(七):IDOC配置

    这是ICS业务模式系列的最后一篇了,主要讲解IDOC的配置. 一.指定EDI传输的供应商逻辑地址 事务代码:WEL1 注意:上面逻辑地址是生产公司+内部客户.有以下两种情形: 1.如果内部客户都是纯数 ...

  9. Android中的LinearLayout布局

    LinearLayout : 线性布局 在一般情况下,当有很多控件需要在一个界面列出来时,我们就可以使用线性布局(LinearLayout)了,  线性布局是按照垂直方向(vertical)或水平方向 ...

  10. NSURLSession详解

    导语 现在NSURLConnection在开发中会使用的越来越少,iOS9已经将NSURLConnection废弃,现在最低版本一般适配iOS7,所以也可以使用. NSURLConnection相对于 ...