首页 > 代码库 > 模型、数据、验证相关点
模型、数据、验证相关点
1)model 模型
1 /** 2 * 模型类创建方法一 3 */ 4 // 注册一个模型类usersmodel 5 Ext.regModel(‘UserModel‘, { 6 fields : [ 7 // 定义模型类的相关字段时要注意添加类型 8 // 常用类型通常是:string,integer,boolean,float 9 {10 name : ‘name‘,11 type : ‘string‘12 }, {13 name : ‘age‘,14 type : ‘int‘15 }]16 });17 // 创建一个模型类的实例对象18 var user = Ext.ModelMgr.create({19 name : ‘zhangsan‘,20 age : ‘15‘,21 }, ‘UserModel‘);22 // 获取信息23 alert(user.get(‘age‘));24 25 /**26 * 模型类创建方式二 27 * 注意date和string的转换28 */29 Ext.define(‘UserModel2‘, {30 extend : ‘Ext.data.Model‘,31 fields : [32 {33 name : ‘name‘,34 type : ‘string‘35 }, {36 name:‘bir‘,37 type:‘date‘,38 //可以定义类型转换器39 convert : function(value, record) {40 if (Ext.isDate(value))41 return values;42 else if (Ext.isString(value)) {43 //先将string转化为标准date,然后判断是否是闰年44 var ifLeap= Ext.Date.isLeapYear(Ext.Date.parse(value, ‘Y-m-d‘));45 return ifLeap;46 }47 }48 }]49 50 });51 var user = Ext.create(‘UserModel2‘, {52 name: ‘zhangsan‘,53 bir:‘1962-1-25‘54 });55 alert(user.get(‘bir‘));
2)validations 验证
1 Ext.apply(Ext.data.validations,{ 2 //输出消息直接在定义好的方法名后加Message 3 emailMessage:‘邮件格式错误‘, 4 email : function(config, value) { 5 /** 6 * 基础类型(string/int等)进行比较时,“==””==="有区别,"=="是将不同类型的值转化为同一类型后比较值是否相等 7 * 基础类型和高级类型进行比较时,"=="是将高级类型转化为基础类型后在比较值是否相等 8 * ===则是只要类型不同就返回false 9 * 对于Array,Object等高级类型,==和===是没有区别的,都是进行指针地址比较10 */11 if(value=http://www.mamicode.com/=null||value=http://www.mamicode.com/=undefined)12 return false;13 var regix=/^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/;14 //!! 表示将类型转化为boolean类型,用两个!是因为在讲类型转化为boolean时已经取了一次非,因此要再取非一次将值转化回来15 return !!regix.test(value);16 }17 });18 19 Ext.define(‘UserModelValidation‘,{20 extend:‘Ext.data.Model‘,21 fields:[22 {name:‘name‘,type:‘string‘},23 {name:‘gender‘,type:‘string‘},24 {name:‘contacts‘,type:‘string‘},25 {name:‘pwd‘,type:‘string‘}26 ],27 validations:[28 {type:‘presence‘,field:‘name‘},29 {type:‘inclusion‘,field:‘gender‘,list:[‘男‘,‘女‘]},30 {type:‘email‘,field:‘contacts‘},31 {type:‘length‘,field:‘pwd‘,min:6}32 ]33 });34 var user=Ext.ModelMgr.create({35 name:‘zhangsan‘,36 gender:‘male‘,37 contacts:‘123‘,38 pwd:‘123‘39 },‘UserModelValidation‘);40 /**41 * 因为没有非表单的错误处理机制,所以出现了Error42 * Error继承于Ext.util.MixedCollection,因此可以用each方法枚举出所有的错误信息43 */44 var errors = user.validate();//Returns true if there are no errors in the collection 45 //获取验证信息46 var message = [];//创建一个空对象存放错误信息47 errors.each(function(v){48 //返回false则停止遍历49 //V:EventObject 50 message.push(v.field+‘ : ‘+v.message)51 });52 //输出数据53 //好像涉及到store?54 alert(message.join(‘\n‘));
3)associations 关系
1 /** 2 *数据模型之间的关系 3 *通常分为: 4 *hasMany associations 一对多 5 *belongsTo associations 多对一 6 *以下为官方示例 7 */ 8 Ext.define(‘User‘, { 9 extend: ‘Ext.data.Model‘,10 fields: [‘id‘, ‘name‘, ‘email‘],11 12 hasMany: {model: ‘Order‘, name: ‘orders‘}13 });14 15 Ext.define(‘Order‘, {16 extend: ‘Ext.data.Model‘,17 fields: [‘id‘, ‘user_id‘, ‘status‘, ‘price‘],18 19 belongsTo: ‘User‘20 });
4.1)localStorageProxy 代理
1 Ext.define(‘UserModel‘,{ 2 extend:‘Ext.data.Model‘, 3 fields:[ 4 {name:‘name‘}, 5 {name:‘age‘} 6 ] 7 /** 8 * 可以在定义model时就创建代理 9 * proxy: {10 * type: ‘localstorage‘,11 * id : ‘UserLocalStorage‘12 * }13 */14 });15 //定义一个store16 var userStore=Ext.create(‘Ext.data.Store‘,{17 model:‘UserModel‘18 });19 //创建一个本地代理20 var localStorageProxy=new Ext.data.LocalStorageProxy({21 id:‘UserLocalStorage‘,22 model:‘UserModel‘23 });24 //清空localstorage中的所有数据25 localStorageProxy.clear();26 //将proxy与store联系起来27 userStore.setProxy(localStorageProxy);28 //添加数据到localStorage中29 userStore.add({name:‘zhangsan‘},{age:14});30 userStore.add({name:‘lisi‘},{age:14});31 userStore.add({name:‘qianliu‘},{age:32});32 //finally, save our Search data to localStorage33 userStore.sync();34 //从localStorage中加载数据到store35 userStore.load();36 37 38 //创建一个空对象来存放数据39 var msg=[];40 // 这个过滤有问题 一旦联合查询就不显示了41 42 // userStore.filter(function(item) {43 // return item.get(‘name‘).length > 544 // &&item.get("age") > 15;45 // });46 // 遍历store 将数据存放到msg中47 userStore.each(function(UserModel) {48 msg.push(UserModel.get(‘name‘) + ‘ ‘ + UserModel.get(‘age‘));49 });50 alert(msg.join(‘\n‘));
4.2)memoryProxy 代理
1 /** 2 * memoryProxy 3 * 数据存在内存当中,只对当前页面有效,一旦刷新数据就会消失 4 * This proxy simply uses a local variable for data storage/retrieval 5 * 数据采用局部变量保存 6 */ 7 Ext.define(‘UserModel‘,{ 8 extend:‘Ext.data.Model‘, 9 fields:[10 {name:‘name‘,type:‘string‘},11 {name:‘nid‘,type:‘int‘,mapping:‘id‘}12 ]13 });14 var mdata=http://www.mamicode.com/{15 users:[16 {name:‘zhangsan‘,id:‘1‘},17 {name:‘lisi‘,id:‘2‘}18 ]19 }20 var userStore=Ext.create(‘Ext.data.Store‘,{21 model:‘UserModel‘,22 autoload:true,23 data:mdata,24 proxy:{25 type:‘memory‘,26 reader:{27 type:‘json‘,//通过json的方式读取?28 root:‘users‘29 }30 }31 });
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。