美文网首页
easyui使用总结

easyui使用总结

作者: 科比可比克 | 来源:发表于2017-12-08 10:13 被阅读0次

    1   概述

    本文档内容包括easyui的引入和easyui的使用实践,编写该文档的目的,主要为了给下次需要使用的easyui的同事做参考,提高开发效率。

    2       EasyUI的引入说明

    2.1         Jquery库引用

    项目中使用EasyUI版本为1.3.3版本其中中自带了Jquery的库,版本是V2.0.0,请注意该版本不一定适用于你的项目场景,关于Jquery V2.0.0对IE浏览器的支持也是每一个开发人员需要注意的。Jquery V2.0.0支IE9+。为了统一项目中的jquery版本,所以就把easyui自带的jquery版本换成项目中使用的版本1.7.2。

    2.2         关于easyui包目录结构调整说明

    通常从jquery-easyui官网中下载下来的包,是一个相当完整的包其中包括一下文件夹及目录:

    demo目录是easyui使用示例;

    locale目录是国际化支持;

    src目录是部分easyui插件的源码;

    plugins目录是easyui使用的插件;

    themes目录包含多套easyui可使用的主题。

    通常在项目中使用的话,demo目录、src目录可以不用,locale可以去除没用的js库,主题如果只使用默认的主题,也可以去除不用的主题。

    2.3         使用easyui需要引用的js和css

    要使用easyui的功能,需要引入一下样式及js。引入代码如下

    /js/jquery-easyui/themes/gray/easyui.css">

    /js/jquery-easyui/themes/icon.css">

    /js/jquery/jquery-1.7.2.min.js">

    /js/jquery-easyui/jquery.easyui.min.js">

    /js/jquery-easyui/locale/easyui-lang-zh_CN.js">

    Js和css文件说明:

    easyui.css是easyui框架的主样式;

    icon.css是easyui中用到的图标的样式;

    jquery-1.7.2.min.js是easyui使用的基础;

    jquery.easyui.min.js是easyui的核心javascript库;

    easyui-lang-zh_CN.js是easyui对中文的国际化支持;

    3       关于easyui控件的使用

    easyui库作为一个相对成熟的js前端框架,提供了非常丰富的UI控件,包括form表单控件、layout布局控件、gird控件等等。

    这里对使用easyui控件过程中的一些注意事项进行说明。

    3.1         控件组成部分

    每一个easyui控件通常都是由属性(Properties)、事件(Events)和方法(Methods)这些组成部分

    控件自身用到的信息可以通过属性存储,控件可以利用某些属性(比如url)完成特定的操作;控件基于事件驱动,开发人员可以在控件初始化的时候,为控件绑定一些特定事件(比:form的onSubmit事件);easyui为每个控件提供了操作控件相关内容的函数,每个函数对应特定的功能(比如:datagrid的options方法,可以获取datagrid控件的属性设置)。

    小贴士:对控件属性、事件、方法的理解,可以参考HTML的input元素(有属性、事件)。

    3.2         控件的继承特性

    在easyui中使用了继承特性,在定义了一部分基础控件的基础上(比如:tree、combo等),可以扩展出功能更完善的控件,比如:基于combo的扩展combotree、combogrid、combobox,基于panel的扩展有tab、layout、Accordion等。

    Easyui控件的继承特性,在父控件中定义的属性适用于子控件,比如有这么一个业务场景,combobox中输入框默认是可以编辑,在我们的业务上需要屏蔽对combobox的编辑功能。针对刚才的业务场景,我们去查看combobox的属性(通常控件的属性可以对控件进行控制),但是在combobox的一堆属性中没有一个可以用于控制输入框的编辑性。不过由于easyui控件拥有继承特性,父控件中定义的属性适用于子控,所以可以查看combobox继承了哪些控件,API告诉我们combobox继承了combo这个控件,同时combo的属性中有editable这一项,专门用于控制编辑框的可编辑性,所以easyui控件的继承特性很好的解决了我们项目中遇到的问题。

    3.3         调用控件的方法

    Easyui控件在初始化之后,javascript语言中对控件的操作通过控件相关的方法完成。

    下面通过combobox控件来说明怎样来调用控件的方法:

    var options = $(“#datagrid”).datagrid(“options”);

    $(“#datagrid”)通过控件的id熟悉,通过Jquery获取到datagrid对象;

    获取datagrid对象后,接控件名称,参数是控件中提供的方法名。

    3.4         修改控件的属性

    Easyui中控件初始化时,所有的初始化信息(包括属性的值、事件对应调用函数)都存储在一个javascript对象中,基本上所有的控件都提供了一个方法“options”,通过这个方法可以获取到这个对象。下面的例子是修改datagrid控件的url属性:

    var options = $(“#datagrid”).datagrid(“options”);

    options.url = “targetUrl”;

    说明:easyui控件的属性都可以作为options的属性来操作,达到修改的目的,特别说明,对datagrid控件的url属性的修改会触发一次datagrid的远程调用。所以这个需要慎重。如果没处理好就可能引起二次加载的问题。

    3.5         控件事件的注册

    Easyui控件支持事件,当相应的操作触发时,可以调用特定的函数,完成自定义的处理动作。

    下面的几个例子用来说明怎么注册:

    例子一在初始化tab控件的时候注册onSelect事件

    $(function(){

    $('#baseTab').tabs({

    border:false, plain:true, fit:true, tools:'#tab-tools',

    onSelect:function(title,index){

    localSearch();

    }

    });});

    说明如下

    上面的HTML代码没有任何特别之处,着重解释js初始化的动作。

    上面的js代码可以分成两部分:$('#baseTab').tabs()和{border:false,…},两部分的结合使用代表tab控件的初始化,tabs方法的参数是一个javascript对象,如上所说,在该对象中就包括了对tabs控件属性的赋值,比如border的值false;以及注册了onSelect事件,其中函数的参数,在easyui提供的api中有说明。

    例子二在HTML中为Editor注册onSelect事件

    设备类型

    function onSelectDeviceType(){

    //处理过程

    }

    说明如下

    HTML中为Editor控件注册了onSelectDeviceType,同时需要在script脚本中提供该函数。

    例子三初始化datagrid后注册onDblClickCell事件

    table.datagrid({

    onDblClickCell:function(rowIndex,field,value){}

    });

    说明如下

    同js初始化控件一样,不过在函数对应的参数中,只指定了要注册的事件。

    4       关于Datagrid

    4.1         Datagrid中列表宽度的设置建议

    Datagrid的column有width属性,说明column是可以精确的指定列的宽度,极端的做法是每列指定具体的值。如果预留一列不设置width属性,系统会为其他列分配宽度后,将剩余的宽度留给该列,注意一点:未设置列宽的column其具体的width值未知,但是大概可以判断出他的值,根据业务需要,决定是否设置具体的width。但是这样自动计算最后一列的宽度就容易影响性能,所以这里还是看界面数据量再进行设置取舍了。

    4.2         关于editor的使用说明

    Easyui支持可编辑的datagrid控件,其中datagrid中行(row)的可编辑功能通过editor实现。

    关于editor的几点说明:

    1、可以把editor看成一个控件,他也有一些属于自己的方法,比如getValue、setValue;

    2、在指定editor的时候,有两个参数很重要:类型和初始对象,对初始对象的理解可以当成脚本初始化控件中的参数,类型主要指编辑控件的类型,比如text、combobox、combotree等;

    3、在指定editor的类型之后,editor就关联了一个target的jquery对象,根据editor的类型,target对象的类型也不一样。有如下规律:如果editor的类型可以对应到easyui中定义的控件,则target就是一个相应类型的easyui控件;特殊的如果editor的类型是text或者numberbox等,对应的target其实就是一个普通的代表input的jquery对象;再有的话,需要根据edtior的具体类型具体判断。

    4、在datagrid中,有相应的方法控制一行所有editor的编辑状态,在js脚本中需要获得行eidtor对象时,需要先调用datagrid的beginEdit,打开行编辑;

    5、  js中有两种方法获取单元格对应的editor对象,分别调用datagrid对象的getEditors和getEditor方法,具体使用请参考easyui的API;

    6、当editor的target中提供的事件不能满足需要的时候,需要为target对象注册更多的事件,比如为类型为text的editor注册keyup事件,这时候,需要探究target对象的本质(比如:combobox、jquery的input对象等),在此基础上为target绑定事件。

    7、提交数据前需要把编辑的行关闭编辑状态endEdit

    总结

    这篇文章只是简单记录easyui大概的入门及个别控件的简单用法,具体还是需要大家多实践、多差api,后期还会有问题总结更新。

    相关文章

      网友评论

          本文标题:easyui使用总结

          本文链接:https://www.haomeiwen.com/subject/msasixtx.html