extjs4 各种proxy reader详细使用
ExtJS提供的数据代理主要分为两大类:
1.客户端代理 (Ext.data.proxy.Client)
2.服务器代理(Ext.data.proxy.Server)
这两个类 都继承自 Ext.data.proxy.Proxy ,
客户端代理主要包括:Memory?? WebStorage?? SessionStorage?? LocalStorage
服务器端代理包括:? Ajax?? Rest? JsonP
?DOM Storage 分为两类, sessionStorage 和 localStorage
sessionStorage: 用于存储与 当前浏览器窗口关联的数据.窗口关闭后,sessionStorage中数据将无法使用
localStorage:????? 用于长期存储数据.窗口关闭,数据仍然可以访问, 所有浏览器窗口可以共享 数据.
?
下面看看一个 localStorage的例子
说明,localstorage 是长期存储数据的,即使关闭浏览器,数据仍然存在.
下面还要说明一点:LocalStorage代理如果没有指定id,则会使用 store的id,如果两个都没指点,那么就会抛出异常
?
?
Ext.data.proxy.SessionStorage
效果:
Ext.define('Search', {
?????????????? fields: ['id', 'query'],
?????????????? extend: 'Ext.data.Model',
?????????????? proxy: {
?????????????????? type: 'sessionstorage',
?????????????????? id: 'twitter-Searches'
?????????????? }
?????????? });?????????? var store = new Ext.data.Store({
?????????????? model: "Search"
?????????? });?????????? //添加数据
?????????? store.add({ query: 'Sencha Touch' });
?????????? store.add({ query: 'Ext JS' });
?????????? //保存数据
?????????? store.sync();?????????? //读取数据
?????????? store.load();?????????? var msg = [];
?????????? store.each(function (data) {
?????????????? msg.push(data.get('id') + '-' + data.get('query'));?????????? })
?????????? alert(msg.join('\n'));?
;
当关闭浏览器,从新浏览此页面时:
.
里面的数据没有增加,验证了刚才的说法.
服务器端代理
服务器端代理会访问远程服务器资源,适合于长期保存重要的数据资料.
下面是 分页参数
//定义User模型
?
排序参数
参数信息:
只需更改 上面程序的 operation配置即可
?
?
?
?
?
?读取复杂的json数据:
?
?数组读取器
?
?
//定义用户模型 Ext.regModel('User', { fields: ['id', 'name'], proxy: //定义代理 { type: 'memory' } }) var store = new Ext.data.Store({ autoLoad: true, data: [{ id: 12, name: 'ss' }, { id: 11, name: 'zz'}], model: 'User' }) //遍历store中元素 var msg = ['遍历:']; store.each(function (res) { msg.push('id=' + res.get('id') + 'name=' + res.get('name')); }) alert(msg.join('\n'));??