04extjs的读写器

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名称写在最后
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值