ExtJS 4.2 教程-05:客户端代理(proxy)
使用load方法会将所有的数据都加载到Store中,如果我们需要进行查询指定的数据,就要用到filter方法了。
另外,我们还可以使用多个过滤条件:
更新操作:
//得到第一个person对象var person = personStore.first();//修改名字字段person.set('name', 'qeefee.com');//保存到本地personStore.sync();删除操作:
//得到第一个person对象var person = personStore.first();//移除personStore.remove(person);//保存personStore.sync();?
SessionStorageProxySessionStorageProxy 的用法与LocalStorageProxy 的用法基本一致,我们这次在Model中添加proxy 的配置项:
//定义数据模型Ext.define('Person', { extend: 'Ext.data.Model', fields: ['name', 'age'], proxy: { type: 'sessionstorage', id: 'myProxyKey' }});在Model中加入代理配置以后,我们就不需要单独的定义代理对象了,可以直接使用Store来对其进行操作:
//定义Storevar personStore = Ext.create("Ext.data.Store", { model: 'Person'});//添加数据personStore.add({ name: 'www.qeefee.com', age: 1 });personStore.add({ name: 'qf', age: 26 });personStore.add({ name: 'qifei', age: 26 });personStore.sync();//读取数据personStore.load();var msg = [];personStore.each(function (person) { msg.push(person.get('name') + ' ' + person.get('age'));});Ext.MessageBox.alert('提示', msg.join('<br />'));?
MemoryProxyMemoryProxy 是将数据存储在内存中的,它只在当前页生效,如果关闭或刷新页面,所有数据都将丢失。在使用MemoryProxy 的时候,我们需要为Store指定一个数据集(类似于缓存),store 将通过代理对这个数据集进行操作:
//定义数据模型Ext.define('Person', { extend: 'Ext.data.Model', fields: ['name', 'age']});vardata = { Users: [ { name: 'www.qeefee.com', age: 1 }, { name: 'qeefee'
, age: 1 } ]}//定义Storevar personStore = Ext.create("Ext.data.Store", { model: 'Person', data: data.Users, proxy: { type: 'memory' }});在代码中高亮显示的部分,就是为store设置的缓存。当personStore 定义的时候,它就会自动的将数据加载到Store中,所以在我们访问数据的时候不需要再调用load方法了:
//读取数据var msg = [];personStore.each(function (person) { msg.push(person.get('name') + ' ' + person.get('age'));});Ext.MessageBox.alert('提示', msg.join('<br />'));和上两个的操作基本一致,我们可以通过下面的代码添加一行新数据:
personStore.add({ name: 'qifei', age: 26 });personStore.sync();本节内容主要介绍了浏览器端代理的用法,在下节内容中,我将介绍如何使用服务器端代理进行数据的操作。