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 28 Javascript
用js的for循环获取radio选中的值
Oct 21 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
Mar 10 Javascript
JavaScript模版引擎的基本实现方法浅析
Feb 15 Javascript
JavaScript lodash常见用法系列小结
Aug 24 Javascript
js生成随机颜色方法代码分享(三种)
Dec 29 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
Mar 15 Javascript
js实时监控文本框输入字数的实例代码
Jan 18 Javascript
js实现input密码框显示/隐藏功能
Sep 10 Javascript
移动端如何用下拉刷新的方式实现上拉加载
Dec 10 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
Aug 20 Javascript
关于vue-router-link选择样式设置
Apr 30 Vue.js
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和MySQL保存和输出图片
2006/10/09 PHP
php获取数组中重复数据的两种方法
2013/06/28 PHP
javascript比较文档位置
2008/04/08 Javascript
JS在IE和FF下attachEvent,addEventListener学习笔记
2009/11/26 Javascript
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
javascript下数值型比较难点说明
2010/06/07 Javascript
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
jQuery $.extend()用法总结
2014/06/15 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
原生JS实现的多个彩色小球跟随鼠标移动动画效果示例
2018/02/01 Javascript
angularJS实现动态添加,删除div方法
2018/02/27 Javascript
JavaScript代码实现txt文件的上传预览功能
2018/03/27 Javascript
layui table 表格模板按钮的实例代码
2019/09/21 Javascript
web.py中调用文件夹内模板的方法
2014/08/26 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
解决django前后端分离csrf验证的问题
2019/02/03 Python
django的ORM操作 增加和查询
2019/07/26 Python
Pycharm在指定目录下生成文件和删除文件的实现
2020/12/28 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
2021/01/07 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
2021/01/28 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
Room Mate Hotels美国:西班牙酒店品牌
2018/04/10 全球购物
HomeAway澳大利亚:预订你的度假屋,公寓、度假村、别墅等
2019/02/20 全球购物
网络工程系信息安全技术专业大学生求职信
2013/10/22 职场文书
竞聘报告优秀范文
2014/11/06 职场文书
毕业论文指导教师评语
2014/12/30 职场文书
交通肇事罪辩护词
2015/05/21 职场文书
护理心得体会范文
2016/01/22 职场文书
golang操作rocketmq的示例代码
2022/04/06 Golang