Extjs让combobox写起来简洁又漂亮


Posted in Javascript onJanuary 05, 2017

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

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

Ext.define('Admin.view.baseCmp.BaseCombobox', {
 extend: 'Ext.form.field.ComboBox',
 xtype: 'baseCombobox',
 editable: false,
 labelSeparator: ':',
 labelWdith: 0,
 triggerAction: 'all',
 labelAlign: 'right',
 //forceSelection: true,此属性操作时,就算去掉文字后,失去焦点后还是会选择上一次选择的记录
 autoSelect: true,
 selectOnfocus: true,
 valueNotFoundText: '',
 name:'',
 queryMode: 'local',
 url:'',
 displayField: '',
 valueField: '',
 requires:['Admin.view.baseCmp.BaseComboboxController'],
 controller: 'baseComboboxController',
 emptyIndex:-1,//自定义属性,空值所在下标,-1则不添加
 selectIndex:0,//自定义属性,自动选择下标
 params:null,//自定义属性,数据参数
 listeners: {
  render: 'getComboData',
  scope: 'controller'
 },
});
Ext.define('Admin.view.baseCmp.BaseComboboxController', {
 extend: 'Ext.app.ViewController',
 alias: 'controller.baseComboboxController',
 getComboData: function (combo) {
  Ext.Ajax.request({
   url: combo.url,
   method :'POST',
   params:combo.params,
   success: function (response) {
    var dataJson = Ext.decode(response.responseText);
    if(dataJson.state != 200 || dataJson.data == null || dataJson.data.length == 0)
    {
     //服务器返回错误
     return ;
    }
    var data = dataJson.data;
    //插入“全部”选项
    if(combo.emptyIndex >= 0)
    {
     var emp = {};
     emp[combo.displayField] = "全部";
     emp[combo.valueField] = "全部";
     Ext.Array.insert(data,combo.emptyIndex,[emp]);
    }
    var store = Ext.create('Ext.data.Store', {
     fields: Ext.Object.getKeys(data[0]),
     data: data
    });

    combo.setStore(store);
    //如果指定选中某个值
    if(combo.selectValue != null)
    {
     combo.select(combo.selectValue);
    }
    else
    {
     //如果指定选中某个下标的值,-1为最后一个,> 0 则为第selectIndex个
     if(combo.selectIndex == -1)
     {
      console.log(data.length - 1);
      combo.select(data[data.length - 1][combo.valueField]);
     }
     else
     {
      combo.select(data[combo.selectIndex][combo.valueField]);
     }

    }

    //触发选中事件
    //combo.fireEvent('select', combo,store.getAt(combo.selectIndex));
   },
   failure: function (response) {
    //请求服务器失败
   }
  });

 }
});

调用实例:

{
    xtype: 'baseCombobox',
    name: "typeName",
    fieldLabel: "类型",
    displayField: 'typeName',
    valueField: 'id',
    emptyIndex:0,
    multiSelect:false,
    url:"/itemType/list",
    listeners:{
     select:'query'
    }
},

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

 xtype: 'itemTypeCombobox',就可以搞定了,代码看起来简洁又漂亮。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery插件的写法分享
Jun 12 Javascript
javascript获取web应用根目录的方法
Feb 12 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
Apr 06 Javascript
js 定义对象数组(结合)多维数组方法
Jul 27 Javascript
微信js-sdk界面操作接口用法示例
Oct 12 Javascript
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
Sep 04 Javascript
微信小程序结合mock.js实现后台模拟及调试
Mar 28 Javascript
小程序组件之自定义顶部导航实例
Jun 12 Javascript
Vue中常用rules校验规则(实例代码)
Nov 14 Javascript
JavaScript队列结构Queue实现过程解析
Mar 07 Javascript
JavaScript中MutationObServer监听DOM元素详情
Nov 27 Javascript
JS实现给对象动态添加属性的方法
Jan 05 #Javascript
bootstrap datetimepicker实现秒钟选择下拉框
Jan 05 #Javascript
JavaScript实现数组降维详解
Jan 05 #Javascript
jQuery解析返回的xml和json方法详解
Jan 05 #Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
Jan 05 #Javascript
jQuery实现动态文字搜索功能
Jan 05 #Javascript
JS实现HTML标签转义及反转义
Apr 14 #Javascript
You might like
对squid中refresh_pattern的一些理解和建议
2009/04/17 PHP
PHP处理JSON字符串key缺少双引号的解决方法
2014/09/16 PHP
php生成图片验证码
2015/06/09 PHP
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
PHP简单判断手机设备的方法
2016/08/23 PHP
thinkPHP统计排行与分页显示功能示例
2016/12/02 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
Google韩国首页图标动画效果
2007/08/26 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
详解jquery uploadify 上传文件
2013/11/09 Javascript
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
js判断设备是否为PC并调整图片大小
2014/02/12 Javascript
js改变style样式和css样式的简单实例
2016/06/28 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
Vue结合原生js实现自定义组件自动生成示例
2017/01/21 Javascript
让div运动起来 js实现缓动效果
2017/07/06 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
Vue开发之封装分页组件与使用示例
2019/04/25 Javascript
layui实现数据表格自定义数据项
2019/10/26 Javascript
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
Saltstack快速入门简单汇总
2016/03/01 Python
python实现SOM算法
2018/02/23 Python
python 常见字符串与函数的用法详解
2018/11/23 Python
Pycharm 安装 idea VIM插件的图文教程详解
2020/02/21 Python
pandas将list数据拆分成行或列的实现
2020/12/13 Python
详解Python中的Lock和Rlock
2021/01/26 Python
50个强大璀璨的CSS3/JS技术运用实例
2010/02/27 HTML / CSS
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
新加坡鲜花速递/新加坡网上花店:Ferns N Petals
2020/08/29 全球购物
Java文件和目录(IO)操作
2014/08/26 面试题
软件毕业生个人鉴定
2014/03/03 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers