`

Extjs组件查找

 
阅读更多

组件创建了,就有方法找到这些组件。在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。

示例

1
2
// 获取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
2
3
4
5
6
7
8
9
10
11
// 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。

示例

1
2
// 返回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。

示例

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

 

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

参数

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

返回值

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

示例:

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

 

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

参数

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

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

返回值

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

示例

1
2
3
4
5
6
7
// 返回表单内有内容的组件
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。

示例

1
2
// 获取表单内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表单:

1
2
3
4
5
6
7
8
Ext.create('Ext.form.Panel', {
    id:'login_form',
    title:'登录',
    items:[
        { xtype: 'textfield', name: 'loginName',fieldLabel:'登录名' },
        { xtype: 'textfield', name: 'loginPwd',fieldLabel:'密码' },
    ]
})

  

获取值

1
2
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。

 

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
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
分享到:
评论

相关推荐

    extjs 源码

    它们展示了如何使用EXTJS组件和API创建实际的Web应用,涵盖了各种功能和场景,如数据绑定、异步请求、图表绘制等。开发者可以通过运行和修改这些示例,来加深对EXTJS的理解。 在EXTJS 3.0.0的压缩包中,可能包含...

    extjs 学习心得笔记

    1. **组件ID的重要性**:在创建ExtJS组件时,务必为其分配一个唯一的ID,这将极大地方便后续通过`Ext.getCmp()`进行组件的查找与操作。 2. **理解组件层次结构**:ExtJS中组件之间存在层次关系,掌握这些关系对于...

    extjs5.1.3 离线帮助文档

    2. **home-images**:这个文件夹存储了文档首页和其他页面使用的图像资源,如图标、示例截图等,这些视觉元素有助于理解和解释EXTJS组件的外观和行为。 3. **guides**:这部分是EXTJS的教程和指南,它包含了关于...

    Selenium IDE测试ExtJs一种测试解决办法.docx

    由于ExtJs组件通常具有独特的结构和类名,我们可以利用Xpath的强大功能来定位这些动态ID的元素。Xpath是一种在XML文档中查找信息的语言,它也可以在HTML中使用。通过编写特定的Xpath表达式,我们可以精确地找到ExtJs...

    中文的Extjs的api手册

    1. **组件系统**:ExtJS的核心在于其组件模型,包括窗口(Window)、面板(Panel)、表格(Grid)、表单(Form)等。每个组件都是可复用的,可以通过组合这些组件构建复杂的UI结构。 2. **数据绑定**:ExtJS提供了...

    实现extjs4 的树、grid、form、query等大部分组件的功能

    EXTJS4的grid和tree都支持内置的查询功能,可以通过配置过滤器实现对数据的快速查找。同时,EXTJS的Store组件也提供了高级查询API,可以编写复杂的查询逻辑。 在实际应用中,EXTJS4的这些组件往往需要配合使用。...

    extjs-form组件配置参数详解

    ### extjs-form组件配置参数详解 #### 一、Ext.form.Action `Ext.form.Action`是ExtJS中的一个类,用于处理表单提交和加载数据的动作。它提供了多种配置选项和属性来控制表单操作的过程。 **配置项** - **success*...

    Extjs4.0、Extjs3.0教程CHM版和PDF版,中文版API

    ExtJS 4.0引入了重大的更新,包括全新的架构、改进的布局系统和更丰富的组件库。其中,新架构引入了MVC(Model-View-Controller)模式,这有助于开发者更好地组织代码,提高可维护性和可扩展性。此外,4.0版本的布局...

    ExtJs2相关书籍

    《Ext实用简明教程》可能是对ExtJS2的基础知识和常见用法的全面介绍,涵盖了如何使用ExtJS构建用户界面、处理数据、创建组件等内容。读者可以从中学习到如何快速上手ExtJS2,理解其核心概念和API,以及如何将这些...

    extjs-3.4.0下载

    2. **CSS样式表**:`resources/css`目录下有用于定义ExtJS组件外观的CSS文件,如`ext-all.css`,可以根据需求自定义主题。 3. **图像资源**:`resources/images`包含各种图标和其他图像资源,这些资源与CSS样式一起...

    ExtJS 3.4 源码包

    - **组件模型**:ExtJS基于组件化设计,每个UI元素都是一个可复用的组件,如窗口(Window)、表格(Grid)、表单(Form)等。 - **布局管理**:ExtJS提供多种布局方式,如Fit布局、Border布局、Table布局等,使得...

    Extjs参考文档

    熟悉CSS2的基本概念和选择器,可以帮助你更好地定制EXTJS组件的外观。 《EXT学习笔记.doc》可能是个人或团队在学习EXTJS过程中整理的笔记,包含了他们的实践经验、技巧和问题解决方案,对于学习EXTJS非常有帮助。 ...

    extJs2.0 中文手册

    在深入探讨ExtJs2.0的具体知识点之前,需要明确ExtJs2.0中文手册的主要内容涵盖了框架的安装、配置、组件使用方法、事件处理、数据管理以及高级应用开发等方面。 首先,ExtJs2.0中文手册应该会介绍如何安装和配置...

    extjs3.3 中文文档

    10. **API参考**:EXTJS 3.3的中文文档还包含了一个详细的API参考,列出了所有可用的类、方法、属性和事件,便于开发者查找和使用。 总的来说,EXTJS 3.3中文文档是学习和开发EXTJS应用程序的重要资源。通过深入...

    extjs资料(API,学习文档)

    开发者可以通过查阅此CHM文件来查找特定功能的实现方式,如创建组件(Grids, Panels, Forms等)、布局管理、数据绑定等。EXTJS的组件模型非常强大,API文档有助于开发者有效地利用这些组件构建复杂的应用界面。 2. ...

    ExtJS2.0教程.chm +Extjs2.2.1压缩包

    `ExtJS2.0教程.chm`:这是一个帮助文件,通常用于提供详细的教程和API参考,帮助开发者了解ExtJS 2.0的各种组件、布局、数据绑定以及事件处理等。在chm文件中,用户可以查找函数、类和方法的用法,学习如何创建用户...

    extjs资料extjs资料extjs资料

    在其中,你可以找到ExtJS类库的详细说明,包括各种组件、方法、事件和配置选项,有助于快速查找和理解特定功能。 2. **EXT2.0中文教程.pdf**:这可能是针对ExtJS 2.0版本的教程,适合初学者入门。2.0版本虽然相对较...

    ExtJS内存调试工具 sIEve

    3. **ExtJS组件分析**:由于ExtJS是基于组件的框架,sIEve特别关注组件的生命周期,能够检测到未正确销毁的组件,这些组件往往是内存泄漏的主要来源。 4. **事件监听器检查**:事件监听器如果没有被正确移除,也...

Global site tag (gtag.js) - Google Analytics