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 ,