toxic

备忘录

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

/**
 * Extjs4.0数据代理详解 数据代理Proxy是数据读写的主要途径,通过代理操作数据进行CRUD
 * 每一步操作都会得到唯一的Ext.data.Operation实例,他包含所有的请求参数 
 * 1.数据代理proxy目录结构:
 * Ext.data.proxy.Proxy 代理类的根类(他分客户端代理和服务器端代理)
 *     Ext.data.proxy.Client 客户端代理
 *              Ext.data.proxy.Memory 普通的内存代理 
 *              Ext.data.proxy.WebStorage 浏览器客户端存储代理
 *     Ext.data.proxy.SessionStorage 浏览器级别代理 
 *     Ext.data.proxy.LocalStorage 本地化的级别代理( 不能跨浏览器)
 *    Ext.data.proxy.Server 服务器端代理 
 *             Ext.data.proxy.Ajax 异步加载方式
 *             Ext.data.proxy.Rest 一直特殊的ajax 
 *             Ext.data.proxy.JsonP 跨域交互代理 :跨域交互严重的安全隐患的,Extjs跨域也需要服务器端的配合
 *             Ext.data.proxy.Direct命令
 * 
 */
Ext.onReady(function() {
   Ext.regModel("user", {
      fields : [{
         name : 'name',
         type : 'string'
        }, {
         name : 'age',
         type : 'int'
        }]

     });
   // 不用create方法,直接用proxy创建对象数据
   var userData = [{
      name : 'www.baidu.com',
      age : 21
     }, {
      name : 'gougou.com',
      age : 22
     }];
   // 创建模型的代理类
   var memoryProxy = Ext.create("Ext.data.proxy.Memory", {
      data : userData,
      model : 'user'
     });
   // 可以crud
   /*userData.push({
      name :'soso.com',
      age : 32
     });
   // update 更新操作
   memoryProxy.update(new Ext.data.Operation({
        action :'update',
        data :userData
       }), function(result){},this);
*/
   // read读操作
   memoryProxy.read(new Ext.data.Operation(), function(result) {
      var datas = result.resultSet.records;
      Ext.Array.each(datas, function(model) {
         alert(model.get('name'));
        });
     });
  });

 

/**
 * jsonP使用
 */
Ext.onReady(function() {
   Ext.regModel("person", {
      fields : [{
         name : 'name',
         type : 'string'
        }],
      proxy : {
       type : 'jsonp',
       url : 'www.baidu.com'
      }
     });

   var person = Ext.ModelManager.getModel('person');
   person.load(1, {
      scope : this,
      success : function(model) {
       alert(model.get('name'));
      }
     });
  })

 

 

 

/**
 * Ext4.0 localStorage使用不能夸浏览器 但能存储上次加载的数据到浏览器中
 */

Ext.onReady(function() {
   Ext.regModel("user", {
      fields : [{
         name : 'name',
         type : 'string'
        }, {
         name : 'age',
         type : 'int'
        }],
      proxy : {
       type : 'localstorage',
       id : 'twitter-Searches'
      }
     });
   // 用store来初始化数据
   var store = new Ext.data.Store({
      model : user
     });
   store.add({
      name : 'www.baidu.com'
     });

   store.sync();// 异步加载
   store.load();
   var msg = [];
   store.each(function(rec) {
      msg.push(rec.get('name'));
     });
   alert(msg.join("\n"));
  })

 

/**
 * ajax代理模式
 */
Ext.onReady(function() {
   Ext.regModel("person", {
      fields : [{
         name : 'name',
         type : 'string'
        }]
     });
   var ajaxProxy = new Ext.data.proxy.Ajax({
      url : 'person.jsp',
      model : 'person',
      reader : 'json'
     });

   // doRequest 读取数据
   ajaxProxy.doRequest(new Ext.data.Operation({
        action : 'read',
        limit : 10,// 分页
        start : 1,
        sorters : [new Ext.util.Sorter({// 排序
         property : 'name',
         direction : 'ASC'
        })]
       }), function(o) {

      var text = o.response.responseText;
      // Ext.JSON.decode() Decodes (parses) a JSON string to
      // an object.
      alert(Ext.JSON.decode(text)['name']);
     });
  })

 

/**
 * sessionstorage:单浏览器模式
 */
Ext.onReady(function() {
   Ext.regModel("user", {
      fields : [{
         name : 'name',
         type : 'string'
        }],
      proxy : {
       type : 'sessionstorage',
       id : 'twiS'
      }
     });
     
     var store=new Ext.data.Store({
     model:user
     });
     store.add({name:'wangbass'});
     store.sync();
     store.load();
     var msg=[];
     store.each(function(rec){
     msg.push(rec.get('name'));
     });
   alert(msg.join("\n")); 
  })

 

posted on 2013-09-28 13:57  toxic  阅读(339)  评论(0编辑  收藏  举报