day04
extjs的读写器
Reader:主要用于将proxy数据代理读取的数据按照不同的
规则进行解析,将解析好的数据保存到Model中
结构图
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的形式传到后台
1.Ext.data.reader.Json
(function(){
Ext.onReady(function(){
var userData = {//内存式数据集
//total:200,//返回值的条数,默认totalProperty的名称是total
count:250,
user:{
userID:'1',
name:'cat.com',
orders:[//一对多 一个user对应两个order
{id:'001',name:'pen'},
{id:'002',name:'book'}
]
}
};
//model
Ext.regModel("user",{
fields:[
{name:'userID',type:'string'},
{name:'name',type:'string'}
],
hasMany:{
model:'order'/**,name:'orders' 默认是多那方的model名称加上s*/
}
});
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',//只要代理user就好了
data:userData,//数据项是userData
reader:{
type:'json',
root:'user',
implicitIncludes:true//是否级联读取,默认为true
totalProperty:'count'//指定的total值就是count属性
}
});//把数据和模型绑在一起,并将数据读入model层
mproxy.read(new Ext.data.Operation(),function(result){
var datas = result.resultSet.records;
alert(result.resultSet.total);//读取的属性名称在resultSet中仍为total,值为count的值
Ext.Array.each(datas,function(model){
alert(model.get("name"));
});
//级联读取
var user = result.resultSet.records[0];
var orders = user.orders();//不是数组,是对象的集合,即store
orders.each(function(order){
alert(order.get('name'));
});
/**
解析record
user:[{auditor:'lily'//审核员,info:{
userID:'1',
name:'cat',
orders:[
{id:'001',name:'pen'},
{id:'002',name:'book'}
]
}}]
read:{
type:'json',
root:'user',
implicitIncludes:true,
totalProperty:'count',
record:'info'//有效信息标识,有用信息都从info中来
//服务器返回的数据可能很复杂,用record可以筛选出有用的数据信息,装载到Model中
}
*/
});
});
})();
2.Ext.data.reader.Xml
users.xml文件
<users>
<user>
<name>cat.com</name>
<id>00101</id>
</user>
</users>
readerxml.js文件
(function(){
Ext.onReady(function(){
Ext.regModel("user",{
fields:[
{name:'name'},
{name:'id'}
],
proxy:{
type:'ajax',
url:'users.xml',
reader:{//读取器
type:'xml',
record:'user'
}
}
});
var user = Ext.ModelManager.getModel('user');
user.load(1,{
success:function(model){
alert(model.get('name'));
}
})
});
})();
3.Ext.data.reader.Array
Ext.onReady(function(){
Ext.regModel("person",{
fields:[
{name:'name'},
{name:'age'}
/**'name','age'也可以通过*/
],
proxy:{
type:'ajax',
url:'person.jsp',
reader:{
type:'array'
}
}
});
var person = Ext.ModelManager.getModel('person');
person.load(1,{
success:function(model){
alert(model.get('name'));
}
});
});
person.jsp文件
<%
response.getWriter().write("[['abc',26]]");
%>
4.Ext.data.writer.Json
Ext.onReady(function(){
Ext.regModel("person",{
fields:[
'name','age'
],
proxy:{
type:'ajax',
url:'person.jsp',
writer:{
type:'json'
//type:'xml'
}
}
});
Ext.ModelMgr.create({
name:'cat',
age:1
},'person').save();//不同处在于model名称写在最后
});
04extjs的读写器
最新推荐文章于 2019-12-12 18:11:50 发布