日期:2014-05-16  浏览次数:20425 次

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:[
{