
数据代理proxy是进行数据读写的主要途径,通过代理操作数据的CRUD,即增删改查。每一步操作全会得到唯一的Ext.data.Operation实例,它包含了所有的请求参数。

数据代理proxy目录结构
Ext.data.proxy.Proxy 代理类的根类(它分为客户端(client)代理和服务器代理(Server))
Ext.data.proxy.Client 客户端代理
Ext.data.proxy.Memory 普通的内存代理
Ext.data.proxy.WebStorage 浏览器客户端存储代理
Ext.data.proxy.SessionStorage 浏览器级别代理
Ext.data.proxy.LocalStorage 本地化的级别代理(跨浏览器)
Ext.data.proxy.Server 服务器端代理
Ext.data.proxy.Ajax 异步加载的方式
Ext.data.proxy.Rest 一种特殊的Ajax
REST指Representation State Transfer(有时写作ReST),表示性状态转移,其要求无状态、客户端-服务器、具有缓存机制的通信协议——实际上是使用HTTP协议。
REST应用使用HTTP请求来POST数据(创建和/或更新)、读取数据(例如进行查询)、删除数据。
REST使用HTTP来进行CRUD(Create/Read/Update/Delete)操作。
Ext.onReady(function(){
//Ext.data.proxy.Memory 内存代理 它的 proxy: memory
//Memory的configs有:
//batchActions、batchOrder、data、enablePaging、listeners、model、reader、write
//其中data表示内存数据的来源,model表示代理哪个对象(哪个model)
Ext.define('User',{
extend:'Ext.data.Model',
fields:[
{name:'name',type:'string'},
{name:'age',type:'int'}
]
});
//不用create方法,直接用代理Proxy来创建对象数据
var userData = [
{name:'name_fdsafs',age:3},
{name:'nane_yyyy',age:54}
];
//创建model的代理类
var memoryProxy = Ext.create('Ext.data.proxy.Memory',{
data:userData,
model:'User'
});
//做CRUD
userData.push({name:'new name',age:90});
//Update
memoryProxy.update(new Ext.data.Operation({
action:'update',
data:userData
}),function(result){},this);
//Read
memoryProxy.read(new Ext.data.Operation(),function(result){
// console.info(result);
var datas = result.resultSet.records;
Ext.Array.each(datas,function(model){
// console.info(model);
// alert(Ext.encode(model));
alert(model.data.name);
})
});
});
Ext.onReady(function(){
Ext.define('User',{
extend:'Ext.data.Model',
fields:[
{name:'name',type:'string'}
],
proxy:{
type:'localstorage', //使用cookie,不关闭浏览器,每次刷新,增加,关闭浏览器,不清cookie,依然保存上次数据
id:'id11111'
}
});
//我们使用store来初始化数据
var store = new Ext.data.Store({
model:User
});
store.add({name:'cdsaf'});
store.sync();
store.load();
var msg = [];
store.each(function(rec){
msg.push(rec.get('name'));
});
alert(msg.join('\n'));
});
Ext.onReady(function(){
Ext.define('User',{
extend:'Ext.data.Model',
fields:[
{name:'name',type:'string'}
],
proxy:{
type:'sessionstorage', //使用session,不关闭浏览器,每次刷新,增加,关闭浏览器,从头开始
id:'id11111'
}
});
//我们使用store来初始化数据
var store = new Ext.data.Store({
model:User
});
store.add({name:'cdsaf'});
store.sync();
store.load();
var msg = [];
store.each(function(rec){
msg.push(rec.get('name'));
});
alert(msg.join('\n'));
});
Ext.onReady(function(){
Ext.define('User',{
extend:'Ext.data.Model',
fields:[
{name:'name',type:'string'}
]
});
var ajaxProxy = new Ext.data.proxy.Ajax({
url:'base/user.jsp',
model:'User',
reader:'json',
limitParam:'indexLimit'
});
ajaxProxy.doRequest(new Ext.data.Operation({
action:'read',
limit:2,
start:1,
sorters:[
new Ext.util.Sorter({
property:'name',
direction:'ASC'
})
]
}),function(o){
var text = o.response.responseText;
alert(Ext.JSON.decode(text)['name']);
});
});
本文纯属原创,如有疑问请后台留言或者联系小编。如有转载请注原作者!版权归本公众号所有!如果您喜欢我们的文章,请关注Java有货公众号!如果本文对您有所帮助,不妨点赞,您的支持,是我们坚持的原创动力!





