Extjs4.0的读写器

Extjs的读写器

Reader:主要用于将proxy数据代理读取的数据按照不同的规则进行解析,将解析好的数据保存到Medel中

结构图:

Ext.data.reader.Reader 读取器的根类

Ext.data.reader.Json JSON格式的读取器 用模型在读取

Ext.data.reader.Array 扩展JSON的Array读取器

Ext.data.reader.Xml XML格式的读取器

Writer

结构图:

Ext.data.writer.Writer

Ext.data.writer.Json 对象被解释成JSON的形式传到后台

Ext.data.writer.Xml 对象被解析成XML的形式传到后台

Reader 用Json来读取

(function(){

Ext.onReady(function(){

//Reader的用法:将proxy数据代理读取的数据按照不同的规则进行解析,将解析好的数据保存到Medel中

//一下采用的是内存式的数据结构

var userData = {

//total:200,

count:250,

//record的用法,如果在传入值的时候有些东西是不需要的,可以用它来删减

user:[{auditor:'laowang',info:{

userId:'1',

name:'laowang',

//订单,一个用户可以有多个订单

orders:[

{id:'001',name:'pen'},

{id:'002',name:'book'}

]

}}]

};

Ext.regModel("user",{

fields:[

{name:'userId',type:'string'},

{name:'name',type:'string'}

],

hasMany: {model: 'order'} //一对多

});

Ext.regModel("order",{

fields:[

{name:'id',type:'string'},

{name:'name',type:'string'}

],

belongsTo: {type: 'belongsTo', model: 'user'} //多对一

});

//利用内存代理来把类和模型之间进行关联

var mproxy = Ext.create("Ext.data.proxy.Memory",{

model:'user',

data:userData,

//只是通过内存代理来读取是读取不出来的,要用到一个读写器

reader:{

type:'json',

root:'user',

implicitIncludes:true,

totalProperty:'count',//totalProperty是把total上面的字母换掉自己想要的,但是在读取的时候属性的值,即total是不变的

record:'info'//对服务器返回的数据可能很复杂,利用record可以删选出有用的信息装在到model中

}

});

//运用内存代理来读取user

mproxy.read(new Ext.data.Operation(),function(result){

var datas = result.resultSet.records;

alert(result.resultSet.total);

Ext.Array.each(datas,function(model){

alert(model.get('name'));

});

//连读,通过user读取到的order是一个对象集合,不是一个数组

var user = result.resultSet.records[0];

var orders = user.orders();

orders.each(function(order){

alert(order.get('name'));

})

});

});

})();

2.Reader 用xml来读取

(function(){

Ext.onReady(function(){

Ext.regModel("user",{

fields:[

{name:'id'},

{name:'name'}

],

//运用ajax代理,xml来读取

proxy:{

type:'ajax',

url:'extLession/readerWriter/readerXml.xml',

reader:{

type:'xml',

record:'user'

}

}

});

//用模型管理器来创建模型

var proxml = Ext.ModelManager.getModel("user");

proxml.load(1,{

success:function(model){

alert(model.get('id'));

}

});

});

})();

Writer 写 用json和xml写

通过json的方式写到后台

(function(){

Ext.onReady(function(){

Ext.regModel("person",{

fields:[

'name','age'

],

proxy:{

type:'ajax',

url:'extLession/readerWriter/person.jsp',

writer:{

type:'json'

}

}

});

Ext.ModelManager.create({

name:'laowang',

age:26

},"person").save();

});

})();

写入到后台的格式为:

如果把type换成xml,则效果为:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章