本次我们会一起讨论ExtJS基础知识的Model,Model相当于 DB中的table 或 JAVA 中的Class。
我们就以下几点进行讨论,首先是如何创建Model,其次是 Validations验证,再者会简单介绍下一对多等概念。
一、如何创建Model
创建Model有几种方式:
方式一://我们利用Ext.define来创建我们的模型类
//DB table person(name,age,email) Ext.define("person",{//第一个参数是类的名称 extend:"Ext.data.Model", fields:[ {name:'name',type:'auto'}, {name:'age',type:'int'}, {name:'email',type:'auto'} ] });
方式二:
//MVC模式中model一定是M层
Ext.regModel("user",{ fields:[ {name:'name',type:'auto'}, {name:'age',type:'int'}, {name:'email',type:'auto'} ] });
二、实例化Model对象
除了我们之前说过的new和Ext.create方法外,在这里还有一种创建Model对象的方法是:
var p2 = Ext.ModelMgr.create({ name:'uaa', age:26, email:'aaa@123.com' },'person');//第二个参数是类的名称
三、Validations验证
Ext.define("person",{ extend:"Ext.data.Model", fields:[ {name:'name',type:'auto'}, {name:'age',type:'int'}, {name:'email',type:'auto'} ], validations:[//通过在声明类的时候,添加一些关于验证的方法 //如下:type就是根据什么来验证 (length长度;age 年龄[自定义]) //field是对哪个属性进行验证 //min 最小 //max 最大 {type:"length",field:"name",min:2,max:6}, {type:'age',field:"age",min:0,max:150} ] });
源码中的示例:
四、apply自定义validation方法
//扩展 也就是我们自定义验证机制的的一个新的验证方法 //apply :Ext扩展原有对象 //apply :第一个参数,原有对象;第二个参数,要改造的属性;第三个参数,传入默认的值 //这个地方我们可以通过看它源码如何写,然后比着写 Ext.apply(Ext.data.validations,{ age:function(config, value){ var min = config.min; var max = config.max; if(min <= value && value<=max){ return true; }else{ this.ageMessage = this.ageMessage+"他的范围应该是["+min+"~"+max+"]"; return false; } }, ageMessage:'age数据出现的了错误' });
以上就是给validations对象加了一个参数是age,里边的函数,就是验证逻辑;ageMessage:是说明了错误的提示信息。
执行验证:
对象.validate();
代码如下:
obj.validate();
五、Model的一对多和多对一
在Model中有一对多和多对一的配置,这里我们简单的做一下介绍,后边会做详细介绍;
(function(){ Ext.onReady(function(){ //类 老师 Ext.regModel("teacher",{ fideld:[ {name:'teacherId',type:"int"}, {name:'name',type:"auto"} ], //设定这两个类之间一对多的关系 hasMany:{ model: 'student', name : 'getStudent',//如果不写这个name,可以通过t.students得到student的一个数据集合 filterProperty: 'teacher_Id'//关联的字段 } }); //学生 Ext.regModel("student",{ fideld:[ {name:'studentId',type:"int"}, {name:'name',type:"auto"}, {name:"teacher_Id",type:'int'} ] }); //t.students 得到子类的一个store数据集合 }) })();
其中就是利用属性hasMany,在代码中有详细解释。