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

(function(){
    Ext.onReady(function(){
        var userData = {
            //total : 200,
            count:250,
            user:{
                userID:'1',
                name:'uspcat.com',
                orders:[
                    {id:'001',name:'pen'},
                    {id:'002',name:'book'}
                ]
            }
        };
        //定义model
        Ext.regModel("user",{
            fields:[
                {name:'userID',type:'string'},
                {name:'name',type:'string'}
            ],
            hasMany: {model: 'order'}    //定义有多个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'     
                //record :'info'//服务器返回的数据可能很复杂,用record可以删选出有用的数据信息,装在带Model中
            }
        });
        mproxy.read(new Ext.data.Operation(),function(result){
            var datas = result.resultSet.records;
            alert(result.resultSet.total);    //打印count
            Ext.Array.each(datas,function(model){
                alert(model.get('name'));
            });
            var user = result.resultSet.records[0];   //获取第一个用用数据
            var orders = user.orders();    //获取到用户中的orders集合
            orders.each(function(order){   //遍历orders集合
                alert(order.get('name'));
            });
           
        });
    });
})();

2.     Array读取器

 Ext.onReady(function(){
    Ext.regModel("person",{
       fields:[
           'name','age'
//         {name:'name'},
//         {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("[['yunfengcheng',26]]");

%>

3. XML格式的读取器

(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);
              alert(model.get('id'));
           }
       });
    });
})();

Users.xml文件:

<users>
    <user>
       <name>uspcat.com</name>
       <id>00101</id>
    </user>
</users>

4.     writer的Json和xml

Ext.onReady(function(){
    Ext.regModel("person",{
       fields:[
           'name','age'
       ],
       proxy :{
           type:'ajax',
           url:'person.jsp',
           writer:{
              type:'json'  //使用Json提交数据
              //type:'xml' //使用xml提交数据
           }
       }
    });
    Ext.ModelMgr.create({
       name:'uspcat.con',
       age:1
    },'person').save(); 
});

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


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


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值