第一部分
kendo UI和kendo MVVM简介
我们的UI框架是kendo UI,设计模式是kendo MVVM,之前最早用的是MVC的模式,但是为了开发的便捷性,减少对DOM元素的直接操作,实现数据模型(Model)和视图(View)的分离,现在项目中的前端开发均采用MVVM模式了。
核心就是创建一个ViewModel对象,把模型中的数据对象以bind的方式和View结合起来。
kendo中kendo.observable
创建ViewModel对象
然后页面上视图内容如下:
最后通过kendo.bind($("#view"), viewModel)将视图和viewmodel绑定起来了。
这样当视图对应表单域内容发生变化,viewModel里对应的属性也发生变化;当viewmodel里某个属性发生变化,对应绑定的表单域显示内容也会发生变化,这样就实现了双向绑定。
注意:如果某个 ViewModel 对象在初始化以后还会使用到(在调用 kendo.bind 之前或之后),设置或者获取属性,则必须使用 kendo.observable 方法或是 new kendo.data.ObservableObject 来创建一个 ViewModel 对象。如果 ViewModel 对象在初始化后不再访问这个对象,那么你可以使用普通 的JavaScript 对象。
参考文档
具体怎么进行属性绑定可以参考
https://www.w3cschool.cn/kendouidevelopmenttutorial/(内容比较简单,适用于新手入门)
官方kendo api :(访问很慢很慢,但是内容很全很详细,适用于复杂功能查阅)
https://docs.telerik.com/kendo-ui/api/javascript/kendo/methods/tostring
常用的js库 underscore.js
http://www.css88.com/doc/underscore/#indexOf
和数据源datasource相关操作的一些内容,譬如transport请求数据,pushUpdate,pushCreate,pushDestroy对数据源的增删改查。
Model里有操作viewmodel的一些方法,如get,set viewmodel对象的属性。
这是MVVM对UI控件进行数据绑定的一些属性,经常会用到
第二部分
常用的UI控件介绍
Grid(表格)
1.grid的定义(CompanyManage/UserSetting/Index)
某一列的模板template可以直接在grid里写,也可以用一段脚本来定义template(推荐使用),当grid本身就在template里定义的,那template里的template只能用脚本来定义
2.Grid数据源定义
3.Grid的change事件
项目中大部分grid定义的change事件是因为grid里有checkbox,为了实现选中当前行时复选框呈选中状态
DropDownList(下拉框)
1.DropDownList控件定义(CompanyManage/SpendExpenseItem/TemplateSetting)
2.数据源和grid类似,不管是什么UI控件,定义数据源的方法都是一样的
3.DropDownList的change事件
4.DropDownList引用模板
下拉框展示 多个值
MultiSelect(多选下拉框)
选中多个保存时提交到后台的value是选中的model数组,当保存成功后再次打开单据时,后台也要传递数组到前端,才能显示成功。
Combobox(可填可选下拉框)
numerictextbox(数字输入框)
ListView(列表)
1.ListView控件定义(CompanyManage/SpendExpenseItem/TemplateSetting)
模板书写
billElementDtlTemplate定义代码比较繁琐,不在此粘帖图片,可直接参考项目中代码书写
listview示例
TabStrip(选项卡
1.TabStrip示例(CompanyManage/UserSetting/Index)
2.TabStrip控件定义(CompanyManage/UserSetting/Index)
Window(窗口)
1.Window控件定义方法一(CompanyManage/SpendExpenseItem/Index)
2.Window控件定义方法二(CompanyManage/SpendExpenseItem/Create)
Notification(提示语)
控件定义
显示方法
TreeView(树)
1.TreeView控件定义(CompanyManage/UserSetting/Index)
Upload(上传附件)
Upload控件定义
Upload控件定义
在select方法里判断上传文件类型和文件大小是否符合
Charts(图表)
报表模块有很多charts,如饼状图、柱状图、罗盘图、折线图等
Reports/DepartReport/ExpenseStatisticIndex
第三部分
典型示例
1.grid当前行中下拉框改变引发其他列变化
振森项目-采购申请单(Purchase/PurchaseApply/Create)
在新增采购明细的方法中,往明细grid插入数据时要插入货劳名称的数据源和货劳名称下拉框的change事件,这样不同行的下拉框change时不会互相影响。
货劳名称下拉框change时,要把选中项的数据如单位、货劳编号、单价等在grid里更新,最后一行进行grid更新