Extjs 让combobox写起来更简单

也已经写了很久时间的extjs ,每次都用到很多的combobox,配置很多东西觉得实在是太麻烦,所以根据常用到的情况写了一个简便的combobox,再次记录下来,以免放在某个地方忘记了找不到了。

定义一个基本的baseCombobox类,如下。

 1 Ext.define(‘Admin.view.baseCmp.BaseCombobox‘, {
 2     extend: ‘Ext.form.field.ComboBox‘,
 3     xtype: ‘baseCombobox‘,
 4     editable: false,
 5     labelSeparator: ‘:‘,
 6     labelWdith: 0,
 7     triggerAction: ‘all‘,
 8     labelAlign: ‘right‘,
 9     //forceSelection: true,此属性操作时,就算去掉文字后,失去焦点后还是会选择上一次选择的记录
10     autoSelect: true,
11     selectOnfocus: true,
12     valueNotFoundText: ‘‘,
13     name:‘‘,
14     queryMode: ‘local‘,
15     url:‘‘,
16     displayField: ‘‘,
17     valueField: ‘‘,
18     requires:[‘Admin.view.baseCmp.BaseComboboxController‘],
19     controller: ‘baseComboboxController‘,
20     emptyIndex:-1,//自定义属性,空值所在下标,-1则不添加
21     selectIndex:0,//自定义属性,自动选择下标
22     params:null,//自定义属性,数据参数
23     listeners: {
24         render: ‘getComboData‘,
25         scope: ‘controller‘
26     },
27 });
 1 Ext.define(‘Admin.view.baseCmp.BaseComboboxController‘, {
 2     extend: ‘Ext.app.ViewController‘,
 3     alias: ‘controller.baseComboboxController‘,
 4     getComboData: function (combo) {
 5         Ext.Ajax.request({
 6             url: combo.url,
 7             method :‘POST‘,
 8             params:combo.params,
 9             success: function (response) {
10                 var dataJson = Ext.decode(response.responseText);
11                 if(dataJson.state != 200 || dataJson.data == null || dataJson.data.length == 0)
12                 {
13                     //服务器返回错误
14                     return ;
15                 }
16                 var data = dataJson.data;
17                 //插入“全部”选项
18                 if(combo.emptyIndex >= 0)
19                 {
20                     var emp = {};
21                     emp[combo.displayField] = "全部";
22                     emp[combo.valueField] = "全部";
23                     Ext.Array.insert(data,combo.emptyIndex,[emp]);
24                 }
25                 var store = Ext.create(‘Ext.data.Store‘, {
26                     fields: Ext.Object.getKeys(data[0]),
27                     data: data
28                 });
29
30                 combo.setStore(store);
31                 //如果指定选中某个值
32                 if(combo.selectValue != null)
33                 {
34                     combo.select(combo.selectValue);
35                 }
36                 else
37                 {
38                     //如果指定选中某个下标的值,-1为最后一个,> 0 则为第selectIndex个
39                     if(combo.selectIndex == -1)
40                     {
41                         console.log(data.length - 1);
42                         combo.select(data[data.length - 1][combo.valueField]);
43                     }
44                     else
45                     {
46                         combo.select(data[combo.selectIndex][combo.valueField]);
47                     }
48
49                 }
50
51                 //触发选中事件
52                 //combo.fireEvent(‘select‘, combo,store.getAt(combo.selectIndex));
53             },
54             failure: function (response) {
55                 //请求服务器失败
56             }
57         });
58
59     }
60 });

调用实例:

 1 {
 2                 xtype: ‘baseCombobox‘,
 3                 name: "typeName",
 4                 fieldLabel: "类型",
 5                 displayField: ‘typeName‘,
 6                 valueField: ‘id‘,
 7                 emptyIndex:0,
 8                 multiSelect:false,
 9                 url:"/itemType/list",
10                 listeners:{
11                     select:‘query‘
12                 }
13 },

这样大大方便了我使用combobox,如果某种类型的combobox需要重复使用,建议还是直接定义好他,到需要用的时候一句

 xtype: ‘itemTypeCombobox‘,就可以搞定了,代码看起来简洁又漂亮。
时间: 2024-10-15 00:36:28

Extjs 让combobox写起来更简单的相关文章

【转】【C#】C# 5.0 新特性——Async和Await使异步编程更简单

一.引言 在之前的C#基础知识系列文章中只介绍了从C#1.0到C#4.0中主要的特性,然而.NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两个关键字简化了异步编程,之所以简化了,还是因为编译器给我们做了更多的工作,下面就具体看看编译器到底在背后帮我们做了哪些复杂的工作的. 二.同步代码存在的问题 对于同步的代码,大家肯定都不陌生,因为我们平常写的代码大部分都是同步的,然而同步代码却存在一个很严重的问题,例如我们向一个Web服务器发出一个

【整洁之道】如何写出更整洁的代码(上)

如何写出更整洁的代码 代码整洁之道不是银弹,不会立竿见影的带来收益. 没有任何犀利的武功招式,只有一些我个人异常推崇的代码整洁之道的内功心法.它不会直接有效的提高你写代码的能力与速度,但是对于程序员的整个职业生涯必然会带来意想不到的好处. 如果你还是一个在校学生,或者是刚工作没多久的"菜鸟",那么很有必要接触一些这方面的知识的.很显然,它会帮助你更快的适应企业级开发的要求. 1. 为什么需要代码更整洁? 在考虑代码整洁的时候,我们需要明确的一个前提是,这里不讨论代码的对错. 关于什么是

Rsession让Java调用R更简单

Rsession让Java调用R更简单 R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器.随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长.现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言. 要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥

TFS 2010 让安装更简单,也让VSS成为历史

一转眼VS 2010 RC(Release Candidate)版本号已经公布一月多了,RTM(Release To Manufacturer)版本号也快妥了,已经进入了最后的倒计时,仅仅等4月12号公布了.TFS 2010也将一起正式公布,相对于2005和2008,2010将是具有里程碑意义的一个版本号,就像它总设计师Brian Harry在以下的Channel 9採訪中所描写叙述的:“TFS 2005是TFS 1.0版,2008则是1.5,而2010则是2.0版”. Brian Harry:

如何写出更好的Java代码

Java是最流行的编程语言之一,但似乎并没有人喜欢使用它.好吧,实际上Java是一门还不错的编程语言,由于最近Java 8发布了,我决定来编辑一个如何能更好地使用Java的列表,这里面包括一些库,实践技巧以及工具. 这篇文章在GitHub上也有.你可以随时在上面贡献或者添加你自己的Java使用技巧或者最佳实践. 编码风格 结构体 builder模式 依赖注入 避免null值 不可变 避免过多的工具类 格式 文档 Stream 部署 框架 Maven 依赖收敛 持续集成 Maven仓储 配置管理

【转】更简单的非递归遍历二叉树的方法

解决二叉树的很多问题的方案都是基于对二叉树的遍历.遍历二叉树的前序,中序,后序三大方法算是计算机科班学生必写代码了.其递归遍历是人人都能信手拈来,可是在手生时写出非递归遍历恐非易事.正因为并非易事,所以网上出现无数的介绍二叉树非递归遍历方法的文章.可是大家需要的真是那些非递归遍历代码和讲述吗?代码早在学数据结构时就看懂了,理解了,可为什么我们一而再再而三地忘记非递归遍历方法,却始终记住了递归遍历方法? 三种递归遍历对遍历的描述,思路非常简洁,最重要的是三种方法完全统一,大大减轻了我们理解的负担.

理解CacheLine与写出更好的JAVA

今天查了很多资料,主要是想搞清楚写JAVA和CacheLine有什么关系以及我们如何针对CacheLine写出更好的JAVA程序. CPU和内存 CPU是计算机的大脑,它负责运算,内存是数据,它为CPU提供数据.这里之所以忽略其他存储设备是为了简化模型.假设我们面对的是具有两个核心的CPU,那么我们的模型大概如下面的样子: CPU计算核心不会直接和内存打交道,它会直接从缓存拿数据,如果缓存没拿到,专业点说即缓存未命中的时候才会去内存去拿,同时会更新缓存.这个过程CPU不会仅仅读取需要的某个字节或

用Python写一个最简单的网络爬虫

什么是网络爬虫?这是百度百科的解释: 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁,自动索引,模拟程序或者蠕虫. 爬虫可以做什么?爬虫可以帮助我们在茫茫互联网中爬取我们需要的特定数据,这个特定数据可以是任何想获得的数据. 爬虫是一个让人热血的话题,因为当你在写爬虫的时候,你会感觉到自己是在做一件很NB的事,而每当写出一个爬虫,就会在此基础上不断尝试写出更NB的爬虫,有

OkHttpUtils-2.0.0 升级后改名 OkGo,全新完美支持 RxJava,比 Retrofit 更简单易用。

okhttp-OkGo 项目地址:jeasonlzy/okhttp-OkGo 简介:OkHttpUtils-2.0.0 升级后改名 OkGo,全新完美支持 RxJava,比 Retrofit 更简单易用.该库是封装了 okhttp 的网络框架,支持大文件上传下载,上传进度回调,下载进度回调,表单上传(多文件和多参数一起上传),链式调用,可以自定义返回对象,支持 Https 和自签名证书,支持 cookie 的持久化和自动管理,支持四种缓存模式缓存网络数据,支持 301 和 302 重定向,扩展了