ExtJs的Reader

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

结构图

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.     Json的读取器

  1. (function(){
  2. Ext.onReady(function(){
  3. var userData = {
  4. //total : 200,
  5. count:250,
  6. user:{
  7. userID:'1',
  8. name:'uspcat.com',
  9. orders:[
  10. {id:'001',name:'pen'},
  11. {id:'002',name:'book'}
  12. ]
  13. }
  14. };
  15. //定义model
  16. Ext.regModel("user",{
  17. fields:[
  18. {name:'userID',type:'string'},
  19. {name:'name',type:'string'}
  20. ],
  21. hasMany: {model: 'order'}    //定义有多个order的属性
  22. });
  23. Ext.regModel("order",{
  24. fields:[
  25. {name:'id',type:'string'},
  26. {name:'name',type:'string'}
  27. ],
  28. belongsTo: {type: 'belongsTo', model: 'user'}  //定义属于
  29. });
  30. var mproxy = Ext.create("Ext.data.proxy.Memory",{
  31. model:'user',
  32. data:userData,
  33. reader:{
  34. type:'json',
  35. root:'user',
  36. implicitIncludes:true,    //级联读取
  37. totalProperty:'count'
  38. //record :'info'//服务器返回的数据可能很复杂,用record可以删选出有用的数据信息,装在带Model中
  39. }
  40. });
  41. mproxy.read(new Ext.data.Operation(),function(result){
  42. var datas = result.resultSet.records;
  43. alert(result.resultSet.total);    //打印count
  44. Ext.Array.each(datas,function(model){
  45. alert(model.get('name'));
  46. });
  47. var user = result.resultSet.records[0];   //获取第一个用用数据
  48. var orders = user.orders();    //获取到用户中的orders集合
  49. orders.each(function(order){   //遍历orders集合
  50. alert(order.get('name'));
  51. });
  52. });
  53. });
  54. })();

2.     Array读取器

  1. Ext.onReady(function(){
  2. Ext.regModel("person",{
  3. fields:[
  4. 'name','age'
  5. //         {name:'name'},
  6. //         {name:'age'}
  7. ],
  8. proxy :{
  9. type:'ajax',
  10. url:'person.jsp',
  11. reader:{
  12. type:'array'
  13. }
  14. }
  15. });
  16. var person =Ext.ModelManager.getModel('person');
  17. person.load(1,{
  18. success:function(model){
  19. alert(model.get('name'));
  20. }
  21. });
  22. });

Person.jsp文件:

<%

response.getWriter().write("[['yunfengcheng',26]]");

%>

3. XML格式的读取器

  1. (function(){
  2. Ext.onReady(function(){
  3. Ext.regModel("user",{
  4. fields:[
  5. {name:'name'},
  6. {name:'id'}
  7. ],
  8. proxy:{
  9. type:'ajax',
  10. url:'users.xml',
  11. reader:{
  12. type:'xml',
  13. record:'user'
  14. }
  15. }
  16. });
  17. var user = Ext.ModelManager.getModel('user');
  18. user.load(1,{
  19. success:function(model){
  20. alert(model);
  21. alert(model.get('id'));
  22. }
  23. });
  24. });
  25. })();

Users.xml文件:

  1. <users>
  2. <user>
  3. <name>uspcat.com</name>
  4. <id>00101</id>
  5. </user>
  6. </users>

4.     writer的Json和xml

  1. Ext.onReady(function(){
  2. Ext.regModel("person",{
  3. fields:[
  4. 'name','age'
  5. ],
  6. proxy :{
  7. type:'ajax',
  8. url:'person.jsp',
  9. writer:{
  10. type:'json'  //使用Json提交数据
  11. //type:'xml' //使用xml提交数据
  12. }
  13. }
  14. });
  15. Ext.ModelMgr.create({
  16. name:'uspcat.con',
  17. age:1
  18. },'person').save();
  19. });

使用Json写入的时候,浏览器查看提交信息是如下图,是以json提交的:

使用xml写入的时候,浏览器查看提交信息是如下图,是以xml提交的:

原文链接:https://blog.csdn.net/hanhan313/article/details/8159774

ExtJs的Reader的更多相关文章

  1. ExtJS笔记 Reader

    Readers are used to interpret data to be loaded into a Model instance or a Store - often in response ...

  2. EXTJS之DATA PROXY READER

    这是不依赖于STORE的读取.我测试了很久,原来在新版本的EXTJS里.modelmanager.getmodel之类的不用了. 更改为静态的LOAD办法. <!DOCTYPE html> ...

  3. ExtJS 4.2 业务开发(二)数据展示和查询

    本篇开始模拟一个船舶管理系统,提供查询.添加.修改船舶的功能,这里介绍其中的数据展示和查询功能. 目录 1. 数据展示 2. 数据查询 3. 在线演示 1. 数据展示 在这里我们将模拟一个船舶管理系统 ...

  4. [转]ExtJS Grid 分页时保持选中的简单实现方法

    原文地址 :http://www.qeefee.com/article/ext-grid-keep-paging-selection ExtJS中经常要用到分页和选择,但是当选择遇到分页的时候,杯具就 ...

  5. ExtJs基础知识总结:自定义弹窗和ComboBox自动联想加载(四)

    概述 Extjs弹窗可以分为消息弹窗.对话框,这些弹窗的方式ExtJs自带的Ext.Msg.alert就已经可以满足简单消息提示,但是相对复杂的提示,比如如何将Ext.grid.Panel的控件显示嵌 ...

  6. ExtJS基础知识总结:自定义日历和ComboBox控件(二)

    概述 1.ExtJS 5不支持日期选择框中只选择年月,为了满足ExtJs5可以实现选择年月的功能,查询网上资料,整理出来了相应的处理方式,最终实现的效果如下图: 2.ExtJS 控件丰富,如果需要实现 ...

  7. extjs 学习小窍门

    一.从form中获取field的三个方法: 1.Ext.getCmp('id'); 2.FormPanel.getForm().findField('id/name'); 3.Ext.get('id/ ...

  8. Extjs 源码组成(4.0.7)

    (function(){})()形式的自执行,构建Ext对象(0~584) 1  设置全局对象EXt:global.Ext = {}, 2 实现了Ext对象面向对象编程的基础方法,如,apply,ex ...

  9. ExtJs 之 ComboBox级联使用

    刚接触ExtJs不到一周,项目使用ExtJs框架,有个版块用到了combobox的级联(两级),遇到了一系列的问题,两天来一直查API.网络资料,终于解决了. 先列出遇到的一系列问题(也许你也遇到过! ...

随机推荐

  1. 洛谷 P1939 【模板】矩阵加速(数列) 解题报告

    P1939 [模板]矩阵加速(数列) 题目描述 a[1]=a[2]=a[3]=1 a[x]=a[x-3]+a[x-1] (x>3) 求a数列的第n项对1000000007(10^9+7)取余的值 ...

  2. React事件传递参数

    <button onClick={(ev) => {this.handleClick(ev,arg1,arg2,...)}} 用箭头函数,注意第一个参数一定要是事件参数.

  3. kubernetes 之ingress

    www.cnblogs.com/hellojackyleon/p/8420911.html apiVersion: extensions/v1beta1 kind: Deployment metada ...

  4. Python【经典类与新式类】

    经典类多继承的调用方法顺序是:深度优先查询,如下图:   新式类多继承的调用方法顺序是:广度优先查询,如下图:   可以使用下面的代码进行实验验证: #经典类class A: def __init__ ...

  5. linux下常用的几个时间函数:time,gettimeofday,clock_gettime,_ftime

    time()提供了秒级的精确度 1.头文件 <time.h> 2.函数原型 time_t time(time_t * timer) 函数返回从TC1970-1-1 0:0:0开始到现在的秒 ...

  6. angularJS__v1.5.6点击同一个菜单刷新

    针对angularjs的1.0版本,点击菜单不刷新问题,只需在配置路由时,路由路径添加“/”,如,点击 标签时,就会刷新,

  7. JAVA-JSP动作

    动作元素基本上是预定义的功能.下表列出了可用的JSP动作 - 编号 动作 描述 1 jsp:include 在请求页面时包含一个文件. 2 jsp:useBean 查找或实例化一个JavaBean. ...

  8. 线程中wait/notify/notifyAll的用法

    前言 多线程时,最关注的就是线程同步,线程间的同步一般用锁来实现,常见的锁就是synchronized和lock.用了synchronized,就不得不提到wait/notify/notifyAll. ...

  9. 算法习题-FFT

    Q1(hdu1402): 给出两个很大的数字A,B,计算二者乘积. 分析:这个题目java应该能过,用FFT做能够加速计算.这里将字符串A按权(10进制)展开,前面的系数就是多项式的系数,这样就构造出 ...

  10. sql 2012之后分页查询速度问题

    一.SQL Server 2012使用OFFSET/FETCH NEXT分页,比SQL Server 2005/2008中的RowNumber()有显著改进.今天特地作了简单测试,现将过程分享如下: ...