/**
 * 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")); 
  })

ext4.0 代理 的使用相关推荐

  1. ext4.0.7 样式兼容性

    现象: 使用自定义弹出下拉框,选择选项后,再次弹出的选择div位置出现很大偏移, 用开发工具查看后,发现top为负数. 原因: html文件的文档声明为: <!DOCTYPE HTML PUBL ...

  2. Ext4.0源码解读(分享二)

    源码: core/src/Ext-more.js L 44 一来就 44 行? 我也没办法, 上面都是注释. Ext中的注释是非常多的.然这些注释都是文档注释.关键的注释很少. L 45 Ext.us ...

  3. 设计模式之代理模式(Proxy)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  4. nginx 反向代理 apache 服务

    反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时 ...

  5. Android 7.0 init.rc的一点改变

    点击打开链接 在Android 7之前的版本中,系统Native服务,不管它们的可执行文件位于系统什么位置都定义在根分区的init.*.rc文件中.这造成init*.rc文件臃肿庞大,给维护带来了一些 ...

  6. Vue之通过代理设置跨域访问

    我们使用脚手架创建的项目,可以在config项目中看到 其中我们打开index.js文件 'use strict' // Template version: 1.3.1 // see http://v ...

  7. EXT扩展实例:在EXT4中检测Iframe的加载事件,并给它加上MASK

    验证环境  ext-4.0.7-gpl 1 Ext.onReady(function() {2 Ext.widget('panel', {3 title: 'IFrame事件',4 width: 50 ...

  8. 开箱即用的高匿代理抓取工具

    golang-proxy v3.0 golang-proxy是一个开箱即用的高匿代理抓取工具, 它是语言无关的 项目地址: https://github.com/storyicon/golang-pr ...

  9. 面试官:策略模式和代理模式有什么区别?

    大家好,我是田哥,昨天一哥们面试被问到代理模式,刚好,我也正在写<MyBatis源码分析:小白系列>专栏中的代理模式. 这里也说明一下,本文是MyBatis源码分析专栏中的一篇文章. 感兴 ...

最新文章

  1. SQL 语句中 where 条件后 写上1=1 是什么意思
  2. IOS7最新的系统漏洞
  3. 泛型:工作原理及其重要性
  4. mysql 5.1编译参数和编译方法
  5. websocket使用
  6. 一个配置web.xml的编程方法
  7. jquery 获得table 行数
  8. 想和人脑一样智能? IBM 的芯片级模仿才是关键
  9. mysql卡住如何定位_MySQL 5.7中如何定位DDL被阻塞的问题
  10. android程序逆向工程
  11. linux hosts和hostname
  12. 安装photoshop2022mac遇到安装失败错误代码182解决方法
  13. IntelliJ IDEA 2019.1 EAP5 发布,Maven 构建输出统一查看
  14. android 点击屏幕事件_Android 事件分发机制
  15. openjudge 买书
  16. 《东周列国志》第四十四回 叔詹据鼎抗晋侯 弦高假命犒秦军
  17. 携程网跨站弱点及物理路径泄漏
  18. 基于JAVA糖果销售管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  19. C++版本OpenCv教程(十一)多通道分离与合并
  20. 计算机中 符号咋打,乘以符号电脑怎么打_详细教您打出乘以符号的方法

热门文章

  1. js根据数组中对象的多个属性值进行排序
  2. HTTP协议原理+实践 Web开发工程师必学(笔记)
  3. 新版二开cp盲盒小纸条月老小程序源码
  4. Magento 获取系统设置 How to get data from Magento System Configuration
  5. HTML5 Geolocation API : 实时跟踪应用
  6. 使用SSH更新WordPress
  7. 【v8】一些关于内存泄漏的踏坑
  8. Markdown——编辑器语法——背景色
  9. 【三维深度学习】多视角立体视觉模型R-MVSNet
  10. Kubernetes-存活探针(liveness probe)(十六)