[ExtJS5学习笔记]第三十五节 sencha extjs 5 组件查询方法总结

简介: 一个UI前台组件肯定会比较多,我们通常习惯性的使用ID来获取需要操作的组件,但是这种方法是extjs推荐的么?有没有extjs推荐使用的获取组件的方法呢?目录目录ext...

一个UI前台组件肯定会比较多,我们通常习惯性的使用ID来获取需要操作的组件,但是这种方法是extjs推荐的么?有没有extjs推荐使用的获取组件的方法呢?

目录

extjs的查询组件的API

组件查询API文档地址:5.1.0-apidocs/#!/api/Ext.ComponentQuery-method-query
可以看到是使用的Ext.ComponentQuery这个单例的query方法来进行查询的。

查询实例

基本的组件查询

  1. 查询xtype组件

    prevField = myField.previousNode('textfield');
    

    这表示查询所有 textfield 以及继承自TextField的组件都会被查询。

    prevTextField = myField.previousNode('textfield(true)');
    

    这表示只查询TextField类的,其他继承类不用去查询,只需要传入true表示严格查询即可。

  2. ID或者ItemID查找

    #myContainer
    当需要查询ID定义的组件的时候,可以使用#来查询。

  3. xtype和ID或者ItemID组合使用

     panel#myPanel
    

    这样可以尽可能的减少ID带来的冲突,对xtype进行了一次过滤。

组件树查询

看下面一个查询实例:

window[title="Input form"] textfield[name=login] ^ form > button[action=submit]

语句从左到右执行,执行完成一个,就按照当前找到的那个再接着往下执行。所以这句话的意思是:
找到标题为Iput form的window的叫做login的textfield的父窗体中button的提交名称为submit的那个按钮。

通过组件的属性检索

上述例子就可以看到 当查询title为Input form的window的时候就是使用的组件的属性。

属性匹配操作符

  1. =
    表示严格等于 。
  2. ~=
    表示只要搜索到检索词即可。
  3. ^=
    表示以什么什么 开头
  4. $=
    表示以什么什么结尾的
  5. /=
    表示支持正则表达式的

逻辑运算的

  1. and逻辑

    Ext.ComponentQuery.query('panel[cls~=my-cls][floating=true][title$="sales data"]');
    

这种类型的是表示逻辑and

  1. or逻辑

    Ext.ComponentQuery.query('field[fieldLabel^=User], field[fieldLabel*=password]');
    

官方案例

    // retrieve all Ext.Panels in the document by xtype
    var panelsArray = Ext.ComponentQuery.query('panel');

    // retrieve all Ext.Panels within the container with an id myCt
    var panelsWithinmyCt = Ext.ComponentQuery.query('#myCt panel');

    // retrieve all direct children which are Ext.Panels within myCt
    var directChildPanel = Ext.ComponentQuery.query('#myCt > panel');

    // retrieve all grids or trees
    var gridsAndTrees = Ext.ComponentQuery.query('gridpanel, treepanel');

    // Focus first Component
    myFormPanel.child(':focusable').focus();

    // Retrieve every odd text field in a form
    myFormPanel.query('textfield:nth-child(odd)');

    // Retrieve every even field in a form, excluding hidden fields
    myFormPanel.query('field:not(hiddenfield):nth-child(even)');
相关文章
|
Go
UWP入门(七)--SplitView详解与页面跳转
原文:UWP入门(七)--SplitView详解与页面跳转 官方文档,逼着自己用英文看,UWP开发离不开官方文档 1. SplitView 拆分视图控件 拆分视图控件具有一个可展开/可折叠的窗格和一个内容区域 singleObject ...
1417 0
|
IDE JavaScript 开发工具
《jQuery EasyUI开发指南》——1.5 MyEclipse的语言配置
一般来说,在开发软件的时候,使用IDE主要有英文和中文这两个选择(对日开发除外)。究竟使用英文版还是使用中文版呢?在这个问题上,很多新手很困扰。使用英文版,显得专业,但如果英文不好,很难对IDE的各种选项进行设置,更不要说是精通了。也许,使用了几年英文版,对IDE的熟悉程度还始终停留在初级阶段。
2182 0
微信小程序把玩(二十三)modal组件
原文:微信小程序把玩(二十三)modal组件 modal弹出框常用在提示一些信息比如:退出应用,清楚缓存,修改资料提交时一些提示等等。 常用属性: wxml 弹出modal 您是否真的要退出应用 ...
1084 0
|
前端开发 JavaScript
新手学JavaScript(三)----超酷消息警告框插件(SweetAlert)
<div class="markdown_views"> <p></p> <div class="toc"> <ul> <li><a href="#html">HTML</a></li> <li><a href="#javascript">JavaScript</a></li> <li><a href="#api">API</a></li> </ul> </div> <p>
2777 0
|
JavaScript 前端开发 知识图谱
[ExtJS5学习笔记]第三十三节 sencha extjs 5 grid表格导出excel
使用extjs肯定少不了使用表格控件,用到表格,领导们(一般)还是惯于使用excel看数据,所以用到extjs表格的技术猿们肯定也会有导出表格excel这一个需求,本文主要针对如何在用extjs将grid表格导出到excel,使用的是前端导出,不涉及后端。
1446 0