暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据模型之Proxy ------【ExtJS】Lesson5

Java有货 2018-03-07
341

       数据代理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  浏览器级别代理

        Ext.data.proxy.LocalStorage    本地化的级别代理(跨浏览器)
Ext.data.proxy.Server   服务器端代理
    Ext.data.proxy.Ajax     异步加载的方式
        Ext.data.proxy.Rest  一种特殊的Ajax

    REST指Representation State Transfer(有时写作ReST),表示性状态转移,其要求无状态、客户端-服务器、具有缓存机制的通信协议——实际上是使用HTTP协议。

    REST应用使用HTTP请求来POST数据(创建和/或更新)、读取数据(例如进行查询)、删除数据。
    REST使用HTTP来进行CRUD(Create/Read/Update/Delete)操作。

一、内存代理的使用
Ext.onReady(function(){  
   //Ext.data.proxy.Memory  内存代理   它的 proxy: memory  
   //Memory的configs有:  
   //batchActions、batchOrder、data、enablePaging、listeners、model、reader、write  
   //其中data表示内存数据的来源,model表示代理哪个对象(哪个model)  
   Ext.define('User',{  
       extend:'Ext.data.Model',  
       fields:[  
       {name:'name',type:'string'},  
       {name:'age',type:'int'}  
       ]  
   });  
   //不用create方法,直接用代理Proxy来创建对象数据  
   var userData = [  
       {name:'name_fdsafs',age:3},  
       {name:'nane_yyyy',age:54}  
   ];  
   //创建model的代理类  
   var memoryProxy = Ext.create('Ext.data.proxy.Memory',{  
       data:userData,  
       model:'User'  
   });  
   //做CRUD  
   userData.push({name:'new name',age:90});  
   //Update  
   memoryProxy.update(new Ext.data.Operation({  
       action:'update',  
       data:userData  
   }),function(result){},this);  
     
   //Read  
   memoryProxy.read(new Ext.data.Operation(),function(result){  
//      console.info(result);  
       var datas = result.resultSet.records;  
       Ext.Array.each(datas,function(model){  
//          console.info(model);  
//          alert(Ext.encode(model));  
           alert(model.data.name);  
       })  
   });      
});

二、localstorage,使用cookie,会保存在机器cookie中,只要不清cookie,数据都保存着
Ext.onReady(function(){  
   Ext.define('User',{  
       extend:'Ext.data.Model',  
       fields:[  
           {name:'name',type:'string'}  
       ],  
       proxy:{  
           type:'localstorage', //使用cookie,不关闭浏览器,每次刷新,增加,关闭浏览器,不清cookie,依然保存上次数据  
           id:'id11111'  
       }  
   });  
   //我们使用store来初始化数据  
   var store = new Ext.data.Store({  
       model:User  
   });  
   store.add({name:'cdsaf'});  
   store.sync();  
   store.load();  
   var msg = [];  
   store.each(function(rec){  
       msg.push(rec.get('name'));  
   });  
   alert(msg.join('\n'));  
});

三、sessionstorage,使用session,关闭浏览器,以前增加的数据就丢失了,从头开始
Ext.onReady(function(){  
   Ext.define('User',{  
       extend:'Ext.data.Model',  
       fields:[  
           {name:'name',type:'string'}  
       ],  
       proxy:{  
           type:'sessionstorage',              //使用session,不关闭浏览器,每次刷新,增加,关闭浏览器,从头开始  
           id:'id11111'  
       }  
   });  
   //我们使用store来初始化数据  
   var store = new Ext.data.Store({  
       model:User  
   });  
   store.add({name:'cdsaf'});  
   store.sync();  
   store.load();  
   var msg = [];  
   store.each(function(rec){  
       msg.push(rec.get('name'));  
   });  
   alert(msg.join('\n'));  
});

四、ajax方式
Ext.onReady(function(){  
   Ext.define('User',{  
       extend:'Ext.data.Model',  
       fields:[  
           {name:'name',type:'string'}  
       ]  
   });  
   var ajaxProxy = new Ext.data.proxy.Ajax({  
       url:'base/user.jsp',  
       model:'User',  
       reader:'json',  
       limitParam:'indexLimit'  
   });  
   ajaxProxy.doRequest(new Ext.data.Operation({  
       action:'read',  
       limit:2,  
       start:1,  
       sorters:[  
           new Ext.util.Sorter({  
               property:'name',  
               direction:'ASC'  
           })  
       ]  
   }),function(o){  
       var text = o.response.responseText;  
       alert(Ext.JSON.decode(text)['name']);  
   });  
});


本文纯属原创,如有疑问请后台留言或者联系小编。如有转载请注原作者!版权归本公众号所有!如果您喜欢我们的文章,请关注Java有货公众号!如果本文对您有所帮助,不妨点赞,您的支持,是我们坚持的原创动力!



文章转载自Java有货,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论