EasyUI扩展组件

EasyUI本身自带一个非常隐蔽但非常强大的功能——扩展自定义组件。其功能和微软的用户组件功能一模一样,但EasyUI的好用多了。举例:一个项目中多个地方需要部门下拉框组件,我们可以这样写:

<html>
<head>
    <title>测试扩展组件</title>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script src="JQueryEasyUI/jquery.easyui.min.js"></script>
    <link href="JQueryEasyUI/themes/default/easyui.css" rel="stylesheet" />
    <script>
        $.parser.plugins.push("departmentbox");//注册扩展组件
        $.fn.departmentbox = function (options, param) {//定义扩展组件
            if (typeof options == "string") { return $.fn.combobox.apply(this, arguments); }//当options为字符串时,说明执行的是该插件的方法。
            options = options || {};

            return this.each(function () {//当该组件在一个页面出现多次时,this是一个集合,故需要通过each遍历。
                var jq = $(this);
                var opts = $.extend({}, $.fn.combobox.parseOptions(this), options);//$.fn.combobox.parseOptions(this)作用是获取页面中的data-options中的配置

                var myopts = $.extend(true, {
                    data: [{ Id: ‘1‘, Name: ‘人事部‘ }, { Id: ‘2‘, Name: ‘财务部‘ }, { Id: ‘3‘, Name: ‘研发部‘ }, { Id: ‘4‘, Name: ‘销售部‘ }],
                    valueField: ‘Id‘,
                    textField: ‘Name‘
                }, opts);
                $.fn.combobox.call(jq, myopts);//把配置对象myopts放到$.fn.combobox这个函数中执行。
            });
        };
    </script>
</head>
<body>
    <label>所属部门:</label>
    <input class="easyui-departmentbox">//html代码中只需要这么简单的一句代码
</body>
</html>

效果如下:

其中,代码中的js代码最好写到单独的js文件中。该例子可通过以下百度云盘链接下载:http://pan.baidu.com/s/1sjzB4s9

另外,departmentbox这个扩展组件与easyui中的组件使用方法是一模一样的,故也可以这么写:

<html>
<head>
    <title>测试扩展组件</title>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script src="JQueryEasyUI/jquery.easyui.min.js"></script>
    <link href="JQueryEasyUI/themes/default/easyui.css" rel="stylesheet" />
    <script>
        $.parser.plugins.push("departmentbox");//注册扩展组件

        $.fn.departmentbox = function (options, param) {//定义扩展组件
            if (typeof options == "string") { return $.fn.combobox.apply(this, arguments); }//当options为字符串时,说明执行的是该插件的方法。
            options = options || {};

            return this.each(function () {//当该组件在一个页面出现多次时,this是一个集合,故需要通过each遍历。
                var jq = $(this);
                var opts = $.extend({}, $.fn.combobox.parseOptions(this), options);//$.fn.combobox.parseOptions(this)作用是获取页面中的data-options中的配置

                var myopts = $.extend(true, {
                    data: [{ Id: ‘1‘, Name: ‘人事部‘ }, { Id: ‘2‘, Name: ‘财务部‘ }, { Id: ‘3‘, Name: ‘研发部‘ }, { Id: ‘4‘, Name: ‘销售部‘ }],
                    valueField: ‘Id‘,
                    textField: ‘Name‘
                }, opts);
                $.fn.combobox.call(jq, myopts);
            });
        };
    </script>
</head>
<body>
    <label>所属部门:</label>
    <input id="department">
</body>
</html>
<script>
    $(document).ready(function () {
        $(‘#department‘).departmentbox();
    });
</script>

当然,真正用到项目中的组件肯定不止这么简单,但原理一样,都是把一些公共的配置写到扩展组件里边去,例如通过url获取数据、多个下拉框联动等都可以通过扩展来完成。

时间: 2024-10-12 16:05:24

EasyUI扩展组件的相关文章

easyui基于 layui.laydate日期扩展组件

本人后端开发码农一个,公司前端忙的一逼,项目使用的是easyui组件,其自带的datebox组件使用起来非常不爽,主要表现在 1.自定义显示格式很麻烦 2.选择年份和月份用户体验也不好 网上有关于和My97DatePicker结合的例子,但感觉也用的不是很爽. 发现国内的layDate体验非常满意,所以萌生出想把这两个组件组合起来的想法,具体代码如下,本人非前端,所以只是实现了基本功能,大神勿喷哦. easyUI版本:V1.5.2 layDate版本:V5.0 /* 基于laydate日期扩展组

EasyUI扩展方法

EasyUI扩展方法: 1.我想指定textarea的行,但editor:{type:'textarea', options: {rows:'4'}}这样写不行.请问大家怎么配置才是指定行的啊? 配置Textarea不可拖动变大变小:   只能自己扩展 textarea 才能实现,配置不用修改,直接扩展就行 Js代码   jQuery.extend(jQuery.fn.datagrid.defaults.editors, { combotree: { init: function(contain

EasyUI扩展方法 + jutil.js

?          EasyUI扩展方法 + jutil.js             博客分类: jQueryEasyUi EasyUI扩展方法: 1.我想指定textarea的行,但editor:{type:'textarea', options: {rows:'4'}}这样写不行.请问大家怎么配置才是指定行的啊? 配置Textarea不可拖动变大变小:   只能自己扩展 textarea 才能实现,配置不用修改,直接扩展就行 Js代码   jQuery.extend(jQuery.fn.

easyUI resizable组件使用

easyUI resizable组件使用: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="easyui/jquery.min.js"></script> <script src="ea

easyUI draggable组件使用

easyUI draggable组件使用: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="easyui/jquery.min.js"></script> <script src="ea

ExtJs4.2应用:使用ExtJs扩展组件searchfield实现数据搜索功能

ExtJs4.2应用:使用ExtJs扩展组件searchfield 实现数据搜索功能 1.引入searchfield组件 在Ext目录下放入ux目录将searchfield组件放入ux目录下的form文件下,如图所示: 2.在对应Js文件中引入searchfield组件 dockedItems: [{ dock: 'top', /**在顶部显示*/ xtype: 'toolbar', /**以工具栏形式展示*/ items: { width: "25%", fieldLabel: 'L

【Android】10.1 扩展组件库和其他视图--本章示例主界面

分类:C#.Android.VS2015: 创建日期:2016-02-18 1.主界面运行截图 2.MainActivity.cs文件中对应的代码 chItems.Add(new Chapter() { ChapterName = "第10章 扩展组件库和其他视图", ChapterItems = new ChItem[] { new ChItem { type=typeof(ch1001Main), Title="例10-1 网格视图基本用法", Desc = &

EasyUI 扩展自定义EasyUI校验规则 验证规则(常用的)

例如 校验输入框只能录入0-1000之间 最多有2位小数的数字 表单<input type="text" id="rate" name="rate" required="true" class="easyui-validatebox"  validType="rateCheck[0,1000]"  maxlength="6" /> $.extend($.f

EasyUI扩展——自定义列排序匹配字段

一些特殊情况下希望实现:单击某些列,但是排序要按照自定义指定另外的列排序 easyui扩展: 如果不写sort属性则按照默认该列的field排序 $.fn.datagrid.defaults.onBeforeLoad = function (e) { var opts = $(this).datagrid("options"); var colopts = $(this).datagrid("getColumnOption", opts.sortName); var