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,则效果为: