本文同时发布在了起飞网,原文地址:http://www.qeefee.com/extjs-course-5-client-proxy
- ExtJS 4.2 教程-01:Hello ExtJS
- ExtJS 4.2 教程-02:bootstrap.js 工作方式
- ExtJS 4.2 教程-03:使用Ext.define自定义类
- ExtJS 4.2 教程-04:数据模型
- ExtJS 4.2 教程-05:客户端代理(proxy)
- ExtJS 4.2 教程-06:服务器代理(proxy)
- ExtJS 4.2 教程-07:Ext.Direct
更多的ExtJS教程,点击进入>>《ExtJS 教程目录》,持续更新中……
代理(proxy)是用来加载和存取Model 数据的。在开发过程中,我们一般不会直接操作代理,它会很好的配合Store 完成工作,所以在本节内容中,我们主要讲解各种proxy的用法。
代理(proxy)分为两大类:客户端代理和服务器端代理。客户端代理主要完成与浏览器本地存取数据相关的工作,服务器端代理则是通过发送请求,从服务器端获取数据。根据各自获取数据的方式,客户端代理和服务器端代理又可以分为一下几种:
客户端代理:
- LocalStorageProxy:将数据存储在localStorage中,此种方式可以持久的将数据存储在客户端。
- SessionStorageProxy:将数据存储在sessionStorage中,此种方式只在当前会话中生效,当关闭浏览器以后,数据也会随之丢失。
- MemoryProxy:将数据存储在内存中,此种方式只在当前页面有效,且如果刷新页面,数据将丢失。
服务器端代理:
- Ajax:在当前域中发送请求
- JsonP:跨域的请求
- Rest:与服务器进行RESTful(GET/PUT/POST/DELETE)交互
- Direct:使用? Ext.direct.Manager 发送请求
LocalStorageProxy
要使用代理,我们首先要有一个数据模型类,我们定义一个简单的Person类:
Ext.define('Person', { extend: 'Ext.data.Model', fields: ['name', 'age'] });
有了Model,我们还需要一个Store。我们可以把 Store 理解为数据仓库,它对应数据库中的表,而Store 包含的 Record 则是数据表中的每一行记录。我们同样简单的创建一个Store对象:
var personStore = Ext.create("Ext.data.Store", { model: 'Person' });
接下来就到我们代理出场的时候了。我们需要创建一个LocalStorageProxy:
var personProxy = new Ext.data.proxy.LocalStorage({ id: 'Person_LocalStorage', model: 'Person' });
有了代理,我们需要将代理和Store联系起来:
personStore.setProxy(personProxy);
其实,在我们实际应用中,可以在Model 或 Store 中直接使用proxy 选项,我们在后面的示例中将会看到具体的用法。
有了Store 和 Proxy,我们先保存一条数据到LocalStorage中:
personStore.add({ name: 'www.qeefee.com', age: 1 }); personStore.add({ name: 'qf', age: 26 }); personStore.add({ name: 'qifei', age: 26 }); personStore.sync();
要查看保存的数据,我们需要先将数据从LocalStorage中加载到Store中,然后对Store 进行遍历:
personStore.load(); var msg = []; personStore.each(function (person) { msg.push(person.get('name'