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对象和DOM对象使用说明
Jun 25 Javascript
JQuery的ready函数与JS的onload的区别详解
Nov 21 Javascript
JavaScript实现关键字高亮功能
Nov 12 Javascript
JavaScript中的方法调用详细介绍
Dec 30 Javascript
AngularJS优雅的自定义指令
Jul 01 Javascript
javascript实现文字无缝滚动
Dec 27 Javascript
微信小程序 解决swiper不显示图片的方法
Jan 04 Javascript
Node.js Buffer用法解读
May 18 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
Apr 23 Javascript
详解关闭令人抓狂的ESlint 语法检测配置方法
Oct 28 Javascript
js实现简单进度条效果
Mar 25 Javascript
js实现无缝轮播图插件封装
Jul 31 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
PHP中几个常用的魔术常量
2012/02/23 PHP
无需重新编译php加入ftp扩展的解决方法
2013/02/07 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
2017/07/10 PHP
PDO::prepare讲解
2019/01/29 PHP
JS控制表格隔行变色
2006/06/26 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
如何判断出一个js对象是否一个dom对象
2016/11/24 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
two.js之实现动画效果示例
2017/11/06 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
2017/12/24 jQuery
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
2018/10/29 Javascript
python实现的一个火车票转让信息采集器
2014/07/09 Python
Python显示进度条的方法
2014/09/20 Python
详解Python当中的字符串和编码
2015/04/25 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
Python连接字符串过程详解
2020/01/06 Python
如何基于python实现归一化处理
2020/01/20 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
css3的focus-within选择器的使用
2020/05/11 HTML / CSS
AmazeUI框架搭建的方法步骤(图文)
2020/08/17 HTML / CSS
会计专业自荐信范文
2013/12/02 职场文书
学前教育毕业生自荐信范文
2013/12/24 职场文书
中专生自我鉴定书范文
2013/12/28 职场文书
鉴定评语大全
2014/05/05 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
有关九一八事变的演讲稿
2014/09/14 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
python实现web邮箱扫描的示例(附源码)
2021/03/30 Python
JS前端轻量fabric.js系列物体基类
2022/08/05 Javascript