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,則效果爲: