ExtJs4 之数据模型

ExtJs的数据模型是应用系统读取和保存数据的重要途径,ExtJs4中对其进行了大幅度的提升和改善,添加了新的Ext.data.Model实体模型类(原3.x和2.x的Ext.data.Record),通过实体模型类可以在客户端执行大部分对数据的操作,它提供了在模型层次的数据校验并新增了关系API将不同的模型关联起来,除此之外,代理Proxy也可以直接作用于Model模型类,这意味我们不依赖Store就可以进行数据的存取操作,新增的localStorage代理可以通过一句代码完成数据在客户端的保存和读取操作,新的Reader读取器甚至可以完成数据的嵌套读取。

ExtJs 4 中数据包总共包含了40多个类,其中有3个类比其他类有更重要的地位,他们分别是:Model(数据实体模型)、Store(数据集)、和Proxy(数据代理)

Ext.data.Model数据实体模型是真实世界中实体对象在应用系统中的反映,它包含字段集和处理数据的函数,它的前身是3.x以及以前版本中的Ext.data.Record类,与Record不同的是Model在功能上进行了大幅度的增强,已经成为ExtJs数据包的核心。

Model数据实体模型类有4个重要组成部分,分别是:

fields:字段定义

proxy:数据代理

associations:模型关联

validatons:数据校验

Model类的主要配置项和主要方法如下:

表1-1 Ext.data.Model主要配置项

配置项

参数类型

说明

defaultProxyType String 配置默认的代理类型,默认为‘ajax’
dirty Boolean 只读标识,数据修改过则为true,否则为false
editing Boolean 只读标识,数据正在编辑则为true,否则为false
fields Array 字段定义数组
modified Object 所有被修改数据组成的键值对对象
phantom Boolean 数据未持久化则为true,否则为false
store Ext.data.Store 通过belongs进行关联的数据集

表1-2 Ext.data.Model主要方法

方法名

说明

Ext.data.Model(Object data,Number id):Void 实体对象的构造函数
data:包含模型字段和关联的对象
id:模型唯一的id
beginEdit:Void 开始编辑,当初与编辑模式时将没有事件被传播到它的数据集Store对象中,当一个编辑开始接下来就必须是endEdit或者cancelEdit
cancelEdit:Void 取消当前编辑操作对记录所有的修改
commit([Boolean silent]):Void 通常被拥有记录的Store进行调用,提交从记录被创建以来或最近一个提交以来的所有更改
copy([String Id]):Record 复制记录
id:新记录的id
destory(Object  options):Model 销毁数据实体
options:代理配置对象
endEdit(Boolean silent):Void 结束编辑,如果数据被更改了则拥有记录的Store将得到通知。
silent:如果为true则不通知Store数据变换,默认为false
get(String fieldName):Mixed 得到指定名字的字段值
getAssociatedData:Object 递归的返回所有的关联数据
getChanges() :Object 得到自记录被创建或最近一次提交更新后发生更改字段的hash集合
getId:Number 获取分配给数据模型实例的唯一id
getProxy:Ext.data.Proxy 获取配置在模型对象上的代理对象
id(Ext.data.Model rec):String 以序列的方式生成id,没有指定id的记录被创建时,该方法将被调用.
rec:未被持久化的对象
isModified(String fieldName): Boolean 得到自记录被创建或最近一次提交更新后指定字段名的数据是否被修改过,是为true,否则为false
isValid:Boolean 数据验证通过则返回true
join(Store store):Void 将模型对象加入到Store中
load(Number id,Object config):void 根据id异步夹在数据
config:包含success,failure和callback回调函数的对象
reject([Boolean silent]):void 通常被拥有记录的Store进行调用,拒绝从记录被创建以来或最近一个提交以来的所有更改,字段将被还原到他们的初始值.
silent:true则不通知Store数据变换
save(Object  options):Model 通过代理保存对象数据
set(String|Object fieldName,Mixed value):void 设置模型中特定字段的值
setDirty:void 设置记录为脏数据
setId(Number id):void 设置模型对象的id字段
setProxy(String|Object|Proxy Proxy ):void 设置模型的数据代理
validate:Ext.data.Errors 验证当前记录值,返回包含错误信息的对象

表1-3 Ext.data.Field主要配置项

配置项

参数类型

说明

convert Function 一个用于转换数据读取器Reader读取到的数据转换函数,转换后的数据将保存在记录Model对象中,一下参数被传入:
v:Mixed 字段原始值
rec:Model模型对象
dateFormat String 日期格式字符串
defaultValue Mixed 字段值为空时的默认值,默认为""
mapping String 用于Reader从数据对象中获取值的路径说明,如果使用Ext.data.jsonReader则在字符串中需要包含一个从根开始的Js表达式,如果使用的是XmlReader则在字符串中就是一个可以引用到元素的Ext.DomQuery路径.如果映射表达式mapping与字段名相同,则该属性可以忽略
name String 模型中引用字段的名称
persist Boolean 设置该字段是否进行持久化,false则该字段被排除在Ext.data.Model.modified和Ext.data.writer.Writer方法之外,当字段只保存客户端临时数据时非常有用,默认为true.
sortDir String 初始时的排序方式,包括升序和降序,ASC或DESC,默认为ASC
sortType Function 将字段值转换为可排序值的函数,SortType中预定义了一些排序函数
type Mixed 字段的数据类型包括:
Auto(默认值,不进行转换),String,int,float,boolean,date
useNull Boolean 设置当把原始数据转换为数字类型时,如果解析失败useNull设置为true则返回null值,否则返回0

表1-4 Ext.data.validations 主要配方法

方法名

说明

exclusion(Object config,String value):boolean 排除验证,如果给定值不在集合中则返回true
config:需要通过list配置项指定数据集合
value:需要校验的数据
format(Object config,String value):Boolean 排除验证,如果给定值不在集合中则返回true
config:需要通过matcher配置项指定正则表达式
value:需要校验的数据
inclusion(Object config,String value):Boolean 包含验证.如果给定值在集合中则返回true
config:需要通过list配置项指定数据集合
value:需要校验的数据
length(Object config,String value):Boolean 如果给定值的字符串长度在最大值和最小值范围内则返回true
config:需要通过max和min配置项指定最大值和最小值
value:需要校验的数据
presence(Object config,Mixedvalue):Boolean 校验给定值是否有效,在函数内部通过给指定值转化为Boolean值进行返回
原文地址:https://www.cnblogs.com/lslvxy/p/3067892.html