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

ExtJs的数据代理proxy

数据代理proxy是进行数据读写的主要途径,通过代理操作数据进行CRUD ---增删改查

每一步操作全会得到唯一的Ext.data.Operation实例他包含了所有的请求参数

数据代理proxy目录结构

Ext.data.proxy.Proxy 代理类的根类(他分为客户端(Client)代理和服务器代理(Server))

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

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

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

                     Ext.data.proxy.SessionStorage浏览器级别代理----[重点]  打开新的浏览器后不记录信息session级别

                     Ext.data.proxy.LocalStorage本地化的级别代理(不能夸浏览器)----[重点] 打开新的浏览器后记录原来信息cookie级别

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

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

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

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

1.     普通代理 Memory

 (function(){
     Ext.onReady(function(){
        //定义user的model类
        Ext.regModel("user",{
            fields:[
                    {name:"name",type:"string"},
                    {name:"age",type:"int"}
                   ]
        });
        //不用create方法我们直接用proxy来创建对象数据
        var userdata=[
                  {name:"hanhan313",age:23},
                  {name:"ecit",age:2}
                ];
        var memoryProxy=Ext.create("Ext.data.proxy.Memory",{
            data:userdata,
            model:"user"
        });
        //每一步操作全会得到唯一的Ext.data.Operation实例他包含了所有的请求参数
        //添加数据
        userdata.push({name:'newuspcat.com',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'));
            });
        });
     });
})();

结果:


2.     浏览器级别代理SessionStorage

//Ext.data.proxy.SessionStorage浏览器级别代理----[重点]   打开新的浏览器后不记录信息session级别
(function(){
   Ext.onReady(function(){
      //定义user的model类
        Ext.regModel("user",{
            fields:[
                    {name:"name",type:"string"}
                   ],
            proxy:{
                type:"sessionstorage", //代理的方式
                id:"localid"           //唯一标示符id
            }
        });
       //使用store初始化数据
       var store=new Ext.data.Store({
           //数据模版
           model:"user"
       });
        //添加数据
        store.add({name:"