[05]EXTJS4.0的讀寫器reader,writer

Reader:主要用於將proxy數據代理讀取的數據按照不同的規則進行解析,將解析好的數據保持到Model(數據模型類)中
結構圖 
    Ext.data.reader.Reader  讀取器的根類
        Ext.data.reader.Json JSON格式的讀取器
            Ext.data.reader.Array  擴展JSON的Array讀取器
        Ext.data.reade.Xml  XML格式的讀取器
Writer
結構圖:
      Ext.data.writer.Writer
           Ext.data.writer.Json  對象被解釋成JSON的形式傳到後臺
           Ext.data.writer.Xml   對象被解釋成XML的形式傳到後臺
--------------------------------------------------------------------------------------
這個例子主要講:模型中的關係(hasMany,belongsTo),reader(type,root,implicitIncludes,totalProperty,record)
readerJson.js
  1. (function(){ 
  2.   Ext.onReady(function(){ 
  3.     var userData = { 
  4.             //total:200, 
  5.             count:250, 
  6.             user:[{auditor:'ynfengcheng',info:{ 
  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'}  
  22.     }); 
  23.     Ext.regModel("order",{ 
  24.         fields:[ 
  25.             {name:'id',type:'string'}, 
  26.             {name:'name',type:'string'} 
  27.         ], 
  28.         belongsTo:{type:'belongTo',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.         console.log(result.resultSet); 
  44.         console.log(result.resultSet.total); 
  45.         Ext.Array.each(datas,function(model){ 
  46.          console.log(model.get("name")); 
  47.         }); 
  48.         var user = result.resultSet.records[0]; 
  49.         var orders = user.orders(); 
  50.         orders.each(function(order){ 
  51.          console.log(order.get('name')); 
  52.         }) 
  53.     }); 
  54.          
  55.   });    
  56. })(); 
運行結果:
 

constructor {total: 250, count: 1, records: Array[1], success: true, message: undefined…}

250

uspcat.com

pen

book

 
-------------------------------------------------------------------------------------
這個例子主要講reader(xml)
readerxml.js
  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.              console.log(model); 
  21.          console.log(model.get('name')); 
  22.         } 
  23.      }); 
  24.   }); 
  25. })(); 
users.xml
  1. <users> 
  2.    <user> 
  3.         <name>uspcat.com</name> 
  4.         <id>00100</id> 
  5.    </user> 
  6. </users> 
運行結果:
 

constructor {internalId: "00100", raw: <user>, data: Object, modified: Object, hasListeners: HasListeners…}

uspcat.com

-----------------------------------------------------------------------------
這個例子主要講reader(array),Ext.ModelManager.getModel(load)
readerarray.js
  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.         console.log(model); 
  20.         console.log(model.get('name')); 
  21.      } 
  22.    }); 
  23. }); 
person.jsp
  1. <%@page language="java" contentType="text/html" pageEncoding="UTF-8"%> 
  2. <% 
  3.    response.getWriter().write("[['yengpingfeng','26']]"); 
  4. %> 
運行結果:
 

constructor {phantom: false, internalId: "ext-record-1", raw: Array[2], data: Object, modified: Object…}

yengpingfeng 

---------------------------------------------------------------------------------
這個例子主要講writer(xml,json)
writer.js
  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' 
  11.               type:'xml' 
  12.          } 
  13.        } 
  14.     }); 
  15.  
  16.     Ext.ModelMgr.create({ 
  17.        name:'uspcat.com'
  18.        age:1 
  19.     },'person').save(); 
  20.      
  21. }); 
運行結果(xml):

運行結果(xml):

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章