本次讨论下数据代理,其实个人第一次听到这个短语的时候,并不是特别的适应,在英语中的含义是proxy,其实如若大家也觉得不适应的话,就直接称呼proxy吧。

在ExtJS中,proxy是进行数据读写的主要途径,可以通过proxy操作数据进行增删改查。

通过网上查阅一些资料得知,proxy共分为两大类,分别如下:

Ext.data.proxy.Client 客户端代理

Ext.data.proxy.Memory 普通的内存代理 ----[重点]

Ext.data.proxy.WebStorage 浏览器客户端存储代理

Ext.data.proxy.SessionStorage 浏览器级别代理----[重点]

Ext.data.proxy.LocalStorage 本地化的级别代理cookie(不能跨浏览器)----[重点]

Ext.data.proxy.Server 服务器端代理

Ext.data.proxy.Ajax 异步加载的方式----[重点]

Ext.data.proxy.Rest 一种特使的Ajax--[知道]

Ext.data.proxy.JsonP 跨域交互的代理----[重点] 跨域是有严重的安全隐患的 extjs的跨域也是需要服务器端相应的配合

一、普通的内存代理示例

  1. (function(){
  2. Ext.onReady(function(){
  3. Ext.regModel("user",{
  4. fields:[
  5. {name:'name',type:'string'},
  6. {name:'age',type:'int'}
  7. ]
  8. });
  9. //不用create方法 我们直接用proxy来创建对象数据
  10. var userData = [
  11. {name:abc',age:1},
  12. {name:'hello',age:26}
  13. ];
  14. //创建model的代理类
  15. var memoryProxy = Ext.create("Ext.data.proxy.Memory",{
  16. data:userData,
  17. model:'user'
  18. })
  19. userData.push({name:'hi',age:1});
  20. //update
  21. memoryProxy.update(new Ext.data.Operation({
  22. action:'update',
  23. data:userData
  24. }),function(result){},this);
  25. //就可以做增删改查了
  26. memoryProxy.read(new Ext.data.Operation(),function(result){
  27. var datas = result.resultSet.records;
  28. Ext.Array.each(datas,function(model){
  29. alert(model.get('name'));
  30. })
  31. });
  32. });
  33. })();

二、浏览器级别代理(session级别代理)

  1. (function(){
  2. Ext.onReady(function(){
  3. Ext.regModel("user",{
  4. fields:[
  5. {name:'name',type:'string'}
  6. ],
  7. proxy:{
  8. type:'sessionstorage',
  9. id : 'twitter-Searches'
  10. }
  11. });
  12. //我们用store来初始化数据
  13. var store = new Ext.data.Store({
  14. model:user
  15. });
  16. store.add({name:'na'});
  17. store.sync();
  18. store.load();
  19. var msg = [];
  20. store.each(function(rec){
  21. msg.push(rec.get('name'));
  22. });
  23. alert(msg.join("\n"));
  24. })
  25. })();

三、本地化级别代理(local级别代理)

  1. (function(){
  2. Ext.onReady(function(){
  3. Ext.regModel("user",{
  4. fields:[
  5. {name:'name',type:'string'}
  6. ],
  7. proxy:{
  8. type:'localstorage',
  9. id : 'twitter-Searches'//全局唯一的
  10. }
  11. });
  12. //我们用store来初始化数据
  13. var store = new Ext.data.Store({
  14. model:user
  15. });
  16. store.add({name:'hello'});
  17. store.sync();
  18. store.load();
  19. var msg = [];
  20. store.each(function(rec){
  21. msg.push(rec.get('name'));
  22. });
  23. alert(msg.join("\n"));
  24. })
  25. })();

四、异步加载的方式代理(ajax方式代理)

  1. (function(){
  2. Ext.onReady(function(){
  3. Ext.regModel("person",{
  4. fields:[
  5. {name:'name',type:'string'}
  6. ]
  7. });
  8. var ajaxProxy = new Ext.data.proxy.Ajax({
  9. url:'person.jsp',
  10. model:'person',
  11. reader:'json',
  12. limitParam : 'indexLimit'//将键值对的键改掉名称
  13. });
  14. ajaxProxy.doRequest(new Ext.data.Operation({
  15. action:'read',
  16. limit:10,
  17. start :1,
  18. sorters:[
  19. new Ext.util.Sorter({
  20. property:'name',
  21. direction:'ASC'
  22. })
  23. ]
  24. }),function(o){
  25. var text = o.response.responseText;
  26. alert(Ext.JSON.decode(text)['name']);//从字符串编程js对象
  27. });
  28. });
  29. })();

五、跨域交互的代理

上边也说到跨域是有严重的安全隐患的,ExtJS的跨域需要服务器端相应的配合;

基本原理是在你的html中写入一段js脚本,src的来源不再是本域,而是跨域的来源,回调的函数是发送过来的函数;

  1. (function(){
  2. Ext.onReady(function(){
  3. Ext.regModel("person",{
  4. fields:[
  5. {name:'name',type:'string'}
  6. ],
  7. proxy:{
  8. type:'jsonp',
  9. url:'abc.jsp'
  10. }
  11. });
  12. var person = Ext.ModelManager.getModel('person');
  13. person.load(1,{
  14. scope:this,
  15. success:function(model){
  16. alert(model.get('name'));
  17. }
  18. });
  19. });
  20. })();

ExtJS4.2学习(6)——基础知识之proxy篇的更多相关文章

  1. jQuery学习笔记 - 基础知识扫盲入门篇

    jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...

  2. ExtJS4.2学习(7)——基础知识之Reader&Writer篇

    Reader: 主要用于将proxy数据代理读取的数据按照不同的规则进行解析,将解析好的数据保存到Modle中. 结构图 Ext.data.reader.Reader 读取器的根类(很少直接实例化这个 ...

  3. Ant学习-001-ant 基础知识及windows环境配置

    一.Ant 概要基础知识 Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发,用以构建应用,或结合其他开源测试工具例如 git.T ...

  4. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

  5. 学习javascript基础知识系列第三节 - ()()用法

    总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...

  6. 关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL))

    关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL)) 欢迎fork本项目原始链接:关于图计算&图学习的基础知识概览:前置知识点学习 ...

  7. 学习Python3基础知识过程中总结

    print()中end==""的用法 例子:用Python3输出九九乘法表: for i in range(1,10): for j in range(1,i+1): s=i*j ...

  8. three.js学习笔记--基础知识

    基础知识 从去年开始就在计划中的three.js终于开始了 历史介绍 (摘自ijunfan1994的转载,感谢作者) OpenGL大概许多人都有所耳闻,它是最常用的跨平台图形库. WebGL是基于Op ...

  9. SQLServer学习笔记<>.基础知识,一些基本命令,单表查询(null top用法,with ties附加属性,over开窗函数),排名函数

    Sqlserver基础知识 (1)创建数据库 创建数据库有两种方式,手动创建和编写sql脚本创建,在这里我采用脚本的方式创建一个名称为TSQLFundamentals2008的数据库.脚本如下:   ...

随机推荐

  1. 商务通代码API

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="content-type" content ...

  2. 测试通过Word直接发布博文

    这里是来自word 2013的一篇测试文章. 测试直接通过Word自带的bloger功能发布博客文章. 这里插入一张图片

  3. vs2013update4 vs-mda-remote cordova真机测试ios 解决里面一个坑

    sudo npm install -g vs-mda-remote --user=你的用户名 此步骤为安装vs-mda-remote,如果安装成功 执行vs-mda-remote –secure fa ...

  4. uboot的devices_init函数分析

    一.函数说明 函数功能: 完成设备的初始化 函数位置: common/devices.c 二.程序分析 int devices_init (void) { #ifndef CONFIG_ARM /* ...

  5. ECommon.Dapper

    ECommon.Dapper 轻量级的dapper扩展 我们都知道Dapper这个orm框架,但是我们也知道他的扩展目前没有特别好的,今天我就推荐一个轻量级的很方便使用的一个扩展叫做 ECommon. ...

  6. DevOps - Development And Operations

    简介: 研发运维一体化 相关资料: 关于DevOps你必须知道的11件事 我眼中的DevOps DevOps 门户 docker for dotnet系列 docker4dotnet #1 前世今生 ...

  7. 重构oceanbase的一个函数

    我去,今天读了一下ob的源码,感觉有点乱啊!!!好吧,当作练手,我重构了一个函数 void* ObMySQLCallback::decode(easy_message_t* m) { uint32_t ...

  8. go bufio

    1 bufio 读结构 type Reader struct {    buf          []byte     // 缓冲区    rd           io.Reader // read ...

  9. java学习之常量与进制

    java中的常量包括以下几类: 1.整型常量,比如:3,5,89,99 2.浮点型常量:比如1.23,5.98,3.1415926 3,字符常量:'a','c','1'(需要注意的一点是字符常量只能包 ...

  10. The fundamental knowledge of Node JS.

    D3 JSJava scirpt is an awesome language for Internface Design.All Obejcts in JavaScirpt could be use ...