Ext4.0 writer和reader详解

/**
 *   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的形式传到后台
 *
 */
Ext.onReady(function() {

   var userData = {
    // total : 200,
    count : 250,
    user : {
     userID : '1',
     name : 'USA',
     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'// 定义一对多关系
      }
     });

   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'
      }
     });

   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'));
        });

      // 连读
      var user = result.resultSet.records[0];
      var orders = user.orders();
      orders.each(function(order){
       alert(order.get('name'));
      });
      
     });
  })

 

 

 

/**
 * Ext.data.xmlReader
 */
Ext.onReady(function() {
   Ext.regModel("user", {
      fields : [{
         name : 'name'
        }, {
         name : 'id'
        }],
      proxy : {
       type : 'ajax',
       url : 'script/users.xml',
       reader : {
        type : 'xml',
        record : 'user'// 返回xml中user对象
       }
      }
     });
   var user = Ext.ModelManager.getModel('user');
   user.load(1, {
      success : function(model) {
       alert(model.get('id'));
      }
     });
  })

 

 

/**
 * Ext.data.reader.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'));
      }
     });
  })

 

/**
 * Extjs 2种writer介绍
 * Ext.data.writer.Json 对象被解释成JSON形式传到后台
 * Ext.data.writer.Xml 对象被解释成XML的形式传到后台
 *
 */

Ext.onReady(function() {
   Ext.regModel("person", {
      fields : ['name', 'age'],
      proxy : {
       type : 'ajax',
       url : 'person.jsp',
       reader : {
        type : 'array'

       },
       writer : {
        //type : 'json'// 根据返回类型得到相应的数据格式
        type:'xml'
       }
      }
     });
   Ext.ModelMgr.create({
      name : 'ww.baidu.com',
      age : 1
     }, 'person').save();
  })

 

你可能感兴趣的:(Ext4.0 writer和reader详解)