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 相关文章推荐
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
Oct 29 Javascript
Ajax异步提交表单数据的说明及方法实例
Jun 22 Javascript
获取select元素被选中的文本内容的js代码
Jan 29 Javascript
jQuery实现新消息闪烁标题提示的方法
Mar 11 Javascript
浅谈jQuery中setInterval()方法
Jul 07 Javascript
jqGrid表格应用之新增与删除数据附源码下载
Dec 02 Javascript
js判断出两个字符串最大子串的函数实现方法
Nov 01 Javascript
如何提高javascript加载速度
Dec 26 Javascript
Vue实现数据请求拦截
Oct 23 Javascript
js 计数排序的实现示例(升级版)
Jan 12 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
Apr 24 Javascript
H5+css3+js搭建带验证码的登录页面
Oct 11 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学习之数组值的操作
2011/04/17 PHP
php伪静态之APACHE篇
2014/06/02 PHP
一个php生成16位随机数的代码(两种方法)
2014/09/16 PHP
浅谈PHP的反射机制
2016/12/15 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
利用JS对iframe父子(内外)页面进行操作的方法教程
2017/06/15 Javascript
nodejs简单实现TCP服务器端和客户端的聊天功能示例
2018/01/04 NodeJs
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
简单了解微信小程序的目录结构
2019/07/01 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
python中from module import * 的一个坑
2014/07/20 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
Python语言生成水仙花数代码示例
2017/12/18 Python
为什么Python中没有"a++"这种写法
2018/11/27 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
python kafka 多线程消费者&手动提交实例
2019/12/21 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
Python应用实现双指数函数及拟合代码实例
2020/06/19 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
大学在校生求职信范文
2013/11/21 职场文书
法学专业本科生自荐信范文
2013/12/17 职场文书
服装设计行业个人的自我评价
2013/12/20 职场文书
经贸韩语专业大学生职业规划
2014/02/14 职场文书
年级组长自我鉴定
2014/02/22 职场文书
2014年圣诞节促销方案
2014/03/14 职场文书
原材料检验岗位职责
2014/03/15 职场文书
2014年科技工作总结
2014/11/26 职场文书
超市店长竞聘书
2015/09/15 职场文书
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
只用20行Python代码实现屏幕录制功能
2021/06/02 Python
TV动画《神废柴☆偶像》公布先导PV
2022/03/20 日漫