extjs-model数据加载
来源:互联网 发布:马克飞象 linux 编辑:程序博客网 时间:2024/05/17 02:02
1、Model代表应用程序管理的一些对象。例如,我们可能会为 我们想在系统中建模的现实世界中的一些物体像使用者、产品和汽车等定义一个Model。这些Model在 模型管理器中注册,被仓库使用, 而这些仓库又被许多 Ext中许多与数据绑定的组件使用。
2、总之这个会很常用。
3、model和数组、对象都有着关联,所以我写了两个方法。仅供参考,还有model的load方法,跨域加载事例。
Ext.onReady(function(){ Ext.define('User', { extend: 'Ext.data.Model', fields: [ {name: 'name', type: 'string'}, {name: 'age', type: 'int'}, {name: 'phone', type: 'string',convert:function(value){ if(Ext.isString(value) && !Ext.String.startsWith(value,'+86')){ return '+86'+value; } }}, {name: 'gender', type: 'string'}, {name: 'username', type: 'string'}, {name: 'alive', type: 'boolean', defaultValue: true} ], flag: true, validations: [ {type: 'presence', field: 'age'}, {type: 'length', field: 'name', min: 2}, {type: 'inclusion', field: 'gender', list: ['Male', 'Female']}, {type: 'exclusion', field: 'username', list: ['Admin', 'Operator']}, {type: 'format', field: 'username', matcher: /([a-z]+)[0-9]{2,3}/} ] }); var instance = Ext.create('User', { name: 'tom', gender: 'Male', phone : '15150003674', username: 'edspencer' }); Logger.printf(instance.flag); //User属性的修改prototype User.prototype.flag = false Logger.printf(instance.flag); //isValid( ) : Boolean //检查模型是否有效。见validate. Logger.printf(instance.isValid()); //getData( Boolean includeAssociated ) : Object //获取每个字段的所有值,并将它们作为 一个对象返回。 Logger.printfobj(instance.getData()); //raw : Object //创建本模型的原始数据,如果本模型是通过reader创建的 Logger.printfobj(instance.raw); //Ext.data.Errors var errors = instance.validate(); Logger.printf(errors.isValid()); //obj--->model var jerry = { name: 'jerry', gender: 'Male', phone : '15150003674', username: 'edspencer', salary :'9000' } instance = obj2model(jerry,instance) Logger.printfobj(instance.getData()); //arr(obj)--->modelarr var tom = { name: 'tom', gender: 'Male', phone : '15150003674', username: 'edspencer', salary :'9000' }; var arr = []; arr.push(tom); arr.push(jerry); instance = arr2modelarr(arr,instance); //------------------model_jsonp------------------ Ext.define('UserModel', { extend: 'Ext.data.Model', //没有对应到data中 fields: [ {name: 'id', type: 'int'}, {name: 'name', type: 'string'}, {name: 'age', type: 'int'}, {name : 'email', type :'string'} ], proxy: { type: 'jsonp', url : 'users.json', reader: { type: 'json', root: 'users' } } }); //异步加载模型 UserModel.load(1,{ scope: this, failure: function(record, operation,s,s) { //do something if the load failed record }, success: function(record, operation) { //do something if the load succeeded var arr = operation.response.users; Logger.printfarr(arr) var usermodel = Ext.create('UserModel'); var instanceModel = arr2modelarr(arr,usermodel); arr = modelarr2arr(instanceModel) Logger.printfarr(arr) }, callback: function(record, operation,s ,s ) { //do something whether the load succeeded or failed record } });}) //obj--->model:model function obj2model(obj,model){ if(!model.isModel||Ext.isEmpty(obj)||!Ext.isObject(obj))return null; var keyarr = Ext.Object.getKeys(model.getData()) Ext.Object.each(obj, function(key, value, myself) { if(Ext.Array.contains(keyarr,key)){ if(Ext.isObject(value)){ console.error('Objects can not contain objects'); return null; } model.set(key,value||'') } }); return model; } //arr--->model[]:model[] function arr2modelarr(arr,model){ if(!model.isModel||Ext.isEmpty(arr)||!Ext.isArray(arr))return null; var modelarr = [] Ext.each(arr,function(item){ modelarr.push(obj2model(item,model)); }) return modelarr; } //model[]--->arr:arr function modelarr2arr(modelarr){ if(Ext.isEmpty(modelarr)||!Ext.isArray(modelarr))return null; var arr = []; Ext.each(modelarr,function(item){ if(item.isModel){ arr.push(item.getData()||'') } }) return arr; } //记录器 Ext.define('Logger', { singleton: true, log: function(msg) { console.log(msg); }, error : function(msg){ console.error(msg) }, printferror : function(msg){ this.error(Ext.id('','num:')+' '+msg); }, printf : function(msg){ this.log(Ext.id('','num:')+' '+msg); }, printf2 : function(val,msg){ this.printf(val+'--'+msg); }, printfobj : function(obj){ var s = ''; if(Ext.isObject(obj)){ Ext.Object.each(obj, function(key, value, myself) { s+=key + ":" + (Ext.isObject(value)?'object':value)+" "; }) } if(s)this.printf(s); }, printfarr : function(arr){ var s = ''; Ext.each(arr,function(item){ if(Ext.isObject(item)){ Ext.Object.each(item, function(key, value, myself) { s+=key + ":" + (Ext.isObject(value)?'object':value)+" "; }) } }); this.printf(s?s:arr) } });
users.json:
Ext.data.JsonP.callback1( { users : [{ id : 1, name : "Ed Spencer", age : 22, email : "ed@sencha.com" }, { id : 2, name : "tom", age : 22, email : "tom@sencha.com" } ], success : true});
1 0
- extjs-model数据加载
- Extjs自动加载model层
- extjs-form数据加载
- extjs-store数据加载
- extjs-grid数据加载
- Extjs 动态加载ComboBox数据
- Extjs itemselector动态加载数据
- Extjs Grid store加载数据
- 【ExtJs】ExtJs下gridpanel中ComboBox数据动态加载问题
- ExtJS 2.0修改操作数据加载
- extjs重新加载查询结果数据
- EXTJS 滚动条之数据加载进度
- ExtJS Grid 按条件加载数据
- extjs combobox分页加载数据不显示
- (22)ExtJS之表单数据加载示例
- Extjs Grid 加载数据.分页。传值,
- Extjs grid 加载数据,分页,传值
- Extjs TreeStore无限制加载数据的问题
- The method setBackground(Drawable) in the type View is not applicable for the arguments (int)
- 云数据库安全初探
- 2015.7.27 ~2015.8.5 北京千锋实训小记
- android studio基本操作
- 安装使用nginx
- extjs-model数据加载
- enter 出发按钮事件
- linux启动报错+centos关闭和开启ipv6
- ListView子项中包含Button按钮监听混乱的解决办法
- Markdown概述及语法
- 27. Remove Element
- 产品经理 面试题2
- 关于SQL中使用正则表达式的一些笔记
- android SwitchButton 纯代码实现,仿5.0原生