EXTJS4自学手册——EXT数据结构组件(proxy代理类之服务器端代理)

一、AjaxProxy

说明:这是最常用的代理,通过ajax和服务器交互数据

 

例子:

<script type="text/javascript">
Ext.onReady(
function () {
//定义一个数据模型
Ext.define('MyInformation', {
extend:
'Ext.data.Model',
fields: [{
name:
'id', type: 'int'
}, {
name:
'name', type: 'string'
}, {
name:
'age', type: 'int'
}],
proxy: {
//通过ajaxProxy和服务器交互数据
type: 'ajax',
//服务器路径
url: 'http://www.cnblogs.com/Scripts/data.js'
}
});
//加载数据
var myInfo = Ext.ModelMgr.getModel('MyInformation').load(1, {
success:
function (info) {
console.log(info.get(
'name'));
}
});
});
</script>

数据:

{
id: 1,
name: 'AAA',
age: 34
}

执行结果:

二、使用ajax代理时为增删改查方法设置不同的服务器路径

说明:使用api属性,可以为增删改查方法设置不同路径

例子:

<script type="text/javascript">
Ext.onReady(
function () {
//定义一个数据模型
Ext.define('MyInformation', {
extend:
'Ext.data.Model',
fields: [{
name:
'id', type: 'int'
}, {
name:
'name', type: 'string'
}, {
name:
'age', type: 'int'
}],
proxy: {
//通过ajaxProxy和服务器交互数据
type: 'ajax',
//为增删改查方法设置不同的路径
api: {
create:
"createURL",
read:
"http://www.cnblogs.com/Scripts/data.js",
update:
"updateURL",
destroy:
"destroyURL"
}
}
});
//通过read属性指定的URL获取数据
Ext.ModelMgr.getModel('MyInformation').load(1, {
success:
function (info) {
//通过update属性指定的Url更新
//更改属性
info.set("name", "BBB");
//同步到服务器
info.save();
//通过destroy属性指定的URL删除数据
info.destroy();
}
});
//创建数据
var myInfo = Ext.ModelManager.create({
id:
2,
name:
'CCC',
age:
34
},
'MyInformation');
通过update属性指定的URL保存数据
myInfo.save();
});
</script>

执行结果:

三、rest代理

说明,rest代理是ajax代理的子集,他自动创建了增删改查的API,但是用的是同一个URL,请与第二条对照学习

例子:

<script type="text/javascript">
Ext.onReady(
function () {
//定义一个数据模型
Ext.define('MyInformation', {
extend:
'Ext.data.Model',
fields: [{
name:
'id', type: 'int'
}, {
name:
'name', type: 'string'
}, {
name:
'age', type: 'int'
}],
proxy: {
//通过restProxy和服务器交互数据
type: 'rest',
//为增删改查方法路径
url: 'http://www.cnblogs.com/Scripts/data.js'
}
});
//通过read属性指定的URL获取数据
Ext.ModelMgr.getModel('MyInformation').load(1, {
success:
function (info) {
//通过update属性指定的Url更新
//更改属性
info.set("name", "BBB");
//同步到服务器
info.save();
//通过destroy属性指定的URL删除数据
info.destroy();
}
});
//创建数据
var myInfo = Ext.ModelManager.create({
id:
2,
name:
'CCC',
age:
34
},
'MyInformation');
通过update属性指定的URL保存数据
myInfo.save();
});
</script>

执行结果:

 

四、JsonP代理

说明:与ajax代理不同的地方在于,JsonP代理是跨域的

例子:

 

<script type="text/javascript">
Ext.onReady(
function () {
//定义一个数据模型
Ext.define('MyInformation', {
extend:
'Ext.data.Model',
fields: [{
name:
'id', type: 'int'
}, {
name:
'name', type: 'string'
}, {
name:
'age', type: 'int'
}],
proxy: {
//通过jsonP代理和服务器交互数据
type: 'jsonp',
//设置服务器路径,可以跨域
url: 'http://www.baidu.com'
}
});
//从指定的服务器加载数据
Ext.ModelMgr.getModel('MyInformation').load();

});
</script>

执行结果:

 注:和服务器交互时,还能传递分页条件,排序条件等信息,详见API

 

 

 

 

posted @ 2012-04-07 20:00  争世不悔  阅读(2070)  评论(2编辑  收藏  举报