ExtJS4.2学习(6)——基础知识之proxy篇
本次讨论下数据代理,其实个人第一次听到这个短语的时候,并不是特别的适应,在英语中的含义是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的跨域也是需要服务器端相应的配合
一、普通的内存代理示例
- (function(){
- Ext.onReady(function(){
- Ext.regModel("user",{
- fields:[
- {name:'name',type:'string'},
- {name:'age',type:'int'}
- ]
- });
- //不用create方法 我们直接用proxy来创建对象数据
- var userData = [
- {name:abc',age:1},
- {name:'hello',age:26}
- ];
- //创建model的代理类
- var memoryProxy = Ext.create("Ext.data.proxy.Memory",{
- data:userData,
- model:'user'
- })
- userData.push({name:'hi',age:1});
- //update
- memoryProxy.update(new Ext.data.Operation({
- action:'update',
- data:userData
- }),function(result){},this);
- //就可以做增删改查了
- memoryProxy.read(new Ext.data.Operation(),function(result){
- var datas = result.resultSet.records;
- Ext.Array.each(datas,function(model){
- alert(model.get('name'));
- })
- });
- });
- })();
二、浏览器级别代理(session级别代理)
- (function(){
- Ext.onReady(function(){
- Ext.regModel("user",{
- fields:[
- {name:'name',type:'string'}
- ],
- proxy:{
- type:'sessionstorage',
- id : 'twitter-Searches'
- }
- });
- //我们用store来初始化数据
- var store = new Ext.data.Store({
- model:user
- });
- store.add({name:'na'});
- store.sync();
- store.load();
- var msg = [];
- store.each(function(rec){
- msg.push(rec.get('name'));
- });
- alert(msg.join("\n"));
- })
- })();
三、本地化级别代理(local级别代理)
- (function(){
- Ext.onReady(function(){
- Ext.regModel("user",{
- fields:[
- {name:'name',type:'string'}
- ],
- proxy:{
- type:'localstorage',
- id : 'twitter-Searches'//全局唯一的
- }
- });
- //我们用store来初始化数据
- var store = new Ext.data.Store({
- model:user
- });
- store.add({name:'hello'});
- store.sync();
- store.load();
- var msg = [];
- store.each(function(rec){
- msg.push(rec.get('name'));
- });
- alert(msg.join("\n"));
- })
- })();
四、异步加载的方式代理(ajax方式代理)
- (function(){
- 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',
- limitParam : 'indexLimit'//将键值对的键改掉名称
- });
- 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;
- alert(Ext.JSON.decode(text)['name']);//从字符串编程js对象
- });
- });
- })();
五、跨域交互的代理
上边也说到跨域是有严重的安全隐患的,ExtJS的跨域需要服务器端相应的配合;
基本原理是在你的html中写入一段js脚本,src的来源不再是本域,而是跨域的来源,回调的函数是发送过来的函数;
- (function(){
- Ext.onReady(function(){
- Ext.regModel("person",{
- fields:[
- {name:'name',type:'string'}
- ],
- proxy:{
- type:'jsonp',
- url:'abc.jsp'
- }
- });
- var person = Ext.ModelManager.getModel('person');
- person.load(1,{
- scope:this,
- success:function(model){
- alert(model.get('name'));
- }
- });
- });
- })();
ExtJS4.2学习(6)——基础知识之proxy篇的更多相关文章
- jQuery学习笔记 - 基础知识扫盲入门篇
jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...
- ExtJS4.2学习(7)——基础知识之Reader&Writer篇
Reader: 主要用于将proxy数据代理读取的数据按照不同的规则进行解析,将解析好的数据保存到Modle中. 结构图 Ext.data.reader.Reader 读取器的根类(很少直接实例化这个 ...
- Ant学习-001-ant 基础知识及windows环境配置
一.Ant 概要基础知识 Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发,用以构建应用,或结合其他开源测试工具例如 git.T ...
- 学习javascript基础知识系列第二节 - this用法
通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...
- 学习javascript基础知识系列第三节 - ()()用法
总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...
- 关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL))
关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL)) 欢迎fork本项目原始链接:关于图计算&图学习的基础知识概览:前置知识点学习 ...
- 学习Python3基础知识过程中总结
print()中end==""的用法 例子:用Python3输出九九乘法表: for i in range(1,10): for j in range(1,i+1): s=i*j ...
- three.js学习笔记--基础知识
基础知识 从去年开始就在计划中的three.js终于开始了 历史介绍 (摘自ijunfan1994的转载,感谢作者) OpenGL大概许多人都有所耳闻,它是最常用的跨平台图形库. WebGL是基于Op ...
- SQLServer学习笔记<>.基础知识,一些基本命令,单表查询(null top用法,with ties附加属性,over开窗函数),排名函数
Sqlserver基础知识 (1)创建数据库 创建数据库有两种方式,手动创建和编写sql脚本创建,在这里我采用脚本的方式创建一个名称为TSQLFundamentals2008的数据库.脚本如下: ...
随机推荐
- 商务通代码API
<!DOCTYPE HTML> <html> <head> <meta http-equiv="content-type" content ...
- 测试通过Word直接发布博文
这里是来自word 2013的一篇测试文章. 测试直接通过Word自带的bloger功能发布博客文章. 这里插入一张图片
- vs2013update4 vs-mda-remote cordova真机测试ios 解决里面一个坑
sudo npm install -g vs-mda-remote --user=你的用户名 此步骤为安装vs-mda-remote,如果安装成功 执行vs-mda-remote –secure fa ...
- uboot的devices_init函数分析
一.函数说明 函数功能: 完成设备的初始化 函数位置: common/devices.c 二.程序分析 int devices_init (void) { #ifndef CONFIG_ARM /* ...
- ECommon.Dapper
ECommon.Dapper 轻量级的dapper扩展 我们都知道Dapper这个orm框架,但是我们也知道他的扩展目前没有特别好的,今天我就推荐一个轻量级的很方便使用的一个扩展叫做 ECommon. ...
- DevOps - Development And Operations
简介: 研发运维一体化 相关资料: 关于DevOps你必须知道的11件事 我眼中的DevOps DevOps 门户 docker for dotnet系列 docker4dotnet #1 前世今生 ...
- 重构oceanbase的一个函数
我去,今天读了一下ob的源码,感觉有点乱啊!!!好吧,当作练手,我重构了一个函数 void* ObMySQLCallback::decode(easy_message_t* m) { uint32_t ...
- go bufio
1 bufio 读结构 type Reader struct { buf []byte // 缓冲区 rd io.Reader // read ...
- java学习之常量与进制
java中的常量包括以下几类: 1.整型常量,比如:3,5,89,99 2.浮点型常量:比如1.23,5.98,3.1415926 3,字符常量:'a','c','1'(需要注意的一点是字符常量只能包 ...
- The fundamental knowledge of Node JS.
D3 JSJava scirpt is an awesome language for Internface Design.All Obejcts in JavaScirpt could be use ...