/**
* Extjs4.0数据代理详解 数据代理Proxy是数据读写的主要途径,通过代理操作数据进行CRUD
* 每一步操作都会得到唯一的Ext.data.Operation实例,他包含所有的请求参数
* 1.数据代理proxy目录结构:
* Ext.data.proxy.Proxy 代理类的根类(他分客户端代理和服务器端代理)
* 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
* Ext.data.proxy.JsonP 跨域交互代理 :跨域交互严重的安全隐患的,Extjs跨域也需要服务器端的配合
* Ext.data.proxy.Direct命令
*
*/
Ext.onReady(function() {
Ext.regModel("user", {
fields : [{
name : 'name',
type : 'string'
}, {
name : 'age',
type : 'int'
}]
});
// 不用create方法,直接用proxy创建对象数据
var userData = [{
name : 'www.baidu.com',
age : 21
}, {
name : 'gougou.com',
age : 22
}];
// 创建模型的代理类
var memoryProxy = Ext.create("Ext.data.proxy.Memory", {
data : userData,
model : 'user'
});
// 可以crud
/*userData.push({
name :'soso.com',
age : 32
});
// update 更新操作
memoryProxy.update(new Ext.data.Operation({
action :'update',
data :userData
}), function(result){},this);
*/
// read读操作
memoryProxy.read(new Ext.data.Operation(), function(result) {
var datas = result.resultSet.records;
Ext.Array.each(datas, function(model) {
alert(model.get('name'));
});
});
});
/**
* jsonP使用
*/
Ext.onReady(function() {
Ext.regModel("person", {
fields : [{
name : 'name',
type : 'string'
}],
proxy : {
type : 'jsonp',
url : 'www.baidu.com'
}
});
var person = Ext.ModelManager.getModel('person');
person.load(1, {
scope : this,
success : function(model) {
alert(model.get('name'));
}
});
})
/**
* Ext4.0 localStorage使用不能夸浏览器 但能存储上次加载的数据到浏览器中
*/
Ext.onReady(function() {
Ext.regModel("user", {
fields : [{
name : 'name',
type : 'string'
}, {
name : 'age',
type : 'int'
}],
proxy : {
type : 'localstorage',
id : 'twitter-Searches'
}
});
// 用store来初始化数据
var store = new Ext.data.Store({
model : user
});
store.add({
name : 'www.baidu.com'
});
store.sync();// 异步加载
store.load();
var msg = [];
store.each(function(rec) {
msg.push(rec.get('name'));
});
alert(msg.join("\n"));
})
/**
* ajax代理模式
*/
Ext.onReady(function() {
Ext.regModel("person", {
fields : [{
name : 'name',
type : 'string'
}]
});
var ajaxProxy = new Ext.data.proxy.Ajax({
url : 'person.jsp',
model : 'person',
reader : 'json'
});
// doRequest 读取数据
ajaxProxy.doRequest(new Ext.data.Operation({
action : 'read',
limit : 10,// 分页
start : 1,
sorters : [new Ext.util.Sorter({// 排序
property : 'name',
direction : 'ASC'
})]
}), function(o) {
var text = o.response.responseText;
// Ext.JSON.decode() Decodes (parses) a JSON string to
// an object.
alert(Ext.JSON.decode(text)['name']);
});
})
/**
* sessionstorage:单浏览器模式
*/
Ext.onReady(function() {
Ext.regModel("user", {
fields : [{
name : 'name',
type : 'string'
}],
proxy : {
type : 'sessionstorage',
id : 'twiS'
}
});
var store=new Ext.data.Store({
model:user
});
store.add({name:'wangbass'});
store.sync();
store.load();
var msg=[];
store.each(function(rec){
msg.push(rec.get('name'));
});
alert(msg.join("\n"));
})