当前位置:编程学习 > JS >>

ExtJS4.x数据模型之Proxy

1. 基本概述
    Proxy数据代理是进行数据读写操作的主要途径,ExtJS提供的数据代理类主要包含两大类,分别是Ext.data.proxy.Client客户端代理和Ext.data.proxy.Server服务端代理,它们都继承自Ext.data.proxy.Proxy类,客户端代理和服务端代理的子类如下:
    客户端代理:
    ● Ext.data.proxy.Memory
    ● Ext.data.proxy.WebStorage
    ● Ext.data.proxy.LocalStorage
    ● Ext.data.proxy.SessionStorage
    服务端代理:
    ● Ext.data.proxy.Ajax
    ● Ext.data.proxy.Rest
    ● Ext.data.proxy.JsonP
2. Ext.data.proxy.Proxy
    Ext.data.proxy.Proxy是所有代理类的父类,其提供了数据的基本操作方法:CRUD,即Create(创建)、Read(读取)、Update(更新)、Delete(删除)。每一个CRUD方法会得到唯一的Ext.data.Operation对象作为参数,其中封装了操作的详细内容,另外每一个CRUD方法都可以指定回调函数对数据进行处理。
3. Ext.data.proxy.Memory
    Ext.data.proxyMemory是一个简单的数据代理,它使用内存变量存取数据,因此每一次刷新页面之后数据都丢失。
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. 
10.         var data = [
11.             {'name': 'Elvin.Cracker', 'age': 24}
12.         ];
13. 
14.         var proxy = Ext.create('Ext.data.proxy.Memory', {
15.             data: data,
16.             model: 'user'
17.         });
18. 
19.         proxy.read(new Ext.data.Operation(), function(result) {
20.             var array = result.resultSet.records;
21.             Ext.Array.each(array, function(record) {
22.                 alert(record.get('name'));
23.             });
24.         });
25.     });
26. })();
    其实,我们可以认为数据代理是模型与数据之前的桥梁,数据代理将它们之间建立关系,然后通过数据代理进行相关的GRUD操作。
3. Ext.data.proxy.LocalStorage
    Ext.data.proxy.LocalStorage是Ext.data.proxy.WebStorage的子类,它经常用来保存不需要存储在服务器端的用户信息,这些信息不会在浏览器关闭之后消失,可以长期保存。
1. (function() {
2.     Ext.onReady(function() {
3.         Ext.regModel('user', {
4.             fields: [
5.                 {name: 'name', type: 'string'},
6.                 {name: 'age', type: 'int'}
7.             ],
8.             proxy: {
9.                 type: 'localstorage',
10.                 id: 'User-Searches'
11.             }
12.         });
13. 
14.         var store = new Ext.data.Store({
15.             model: user
16.         });
17. 
18.         store.add({'name': 'Elvin.Cracker', 'age': 24});
19. 
20.         // 保存数据
21.         store.sync();
22. 
23.         // 读取数据
24.         store.load();
25. 
26.         var message = []
27.         store.each(function(record) {
28.             message.push(record.get('name'));
29.         });
30.         alert(message.join('\n'));
31.     });
32. })();
4. Ext.data.proxy.SessionStorage
    Ext.data.proxy.SessionStorage是Ext.data.proxy.WebStorage的子类,它与Ext.data.proxy.LocalStorage的区别在于当浏览器关闭时数据会丢失,不适合长期保存数据,除此之外与LocalStorage代理的使用方式完全相同。
1. (function() {
2.     Ext.onReady(function() {
3.         Ext.regModel('user', {
4.             fields: [
5.                 {name: 'name', type: 'string'},
6.                 {name: 'age', type: 'int'}
7.             ],
8.             proxy: {
9.                 type: 'sessionstorage',
10.                 id: 'User-Searches'
11.             }
12.         });
13. 
14.         var store = new Ext.data.Store({
15.             model: user
16.         });
17. 
18.         store.add({'name': 'Elvin.Cracker', 'age': 24});
19. 
20.         // 保存数据
21.   &nbs

补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,