现在的位置: 首页 > 综合 > 正文

Extjs4.0的读写器

2013年03月28日 ⁄ 综合 ⁄ 共 3324字 ⁄ 字号 评论关闭

 

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,则效果为:

抱歉!评论已关闭.