在Ext的JsonStore的load方法中使用回调callback 修改treeStore 数据

本文探讨了在使用Ajax进行异步请求时,如何通过回调函数解决数据延迟加载的问题,具体以Ext框架为例,展示了如何在数据集加载完成后处理空值问题,以及同步加载数据的方法。


Ajax的异步请求有时候会带来一些问题,如在Ext做的页面中,需要加载一个JsonStore数据集,在紧跟着的代码中可能就会对数据集进行访问的操作,由于异步请求很可能导致数据未加载完就开始访问,结果可能会不是想要的结果。这里load方法中提供了一个callback回调函数,可以解决延迟加载的问题,我们需要处理的一部分代码可以放在callback函数中处理,这样就解决了异步请求带来的问题。如:

Js代码
1.var collectIndex_ds = new Ext.data.JsonStore({ 
2. url: '', 
3. root: 'collectIndexs', 
4. id: 'id', 
5. fields:[ 
6. {name:'id'}, 
7. {name:'userViewId'}, 
8. {name:'timeType'}, 
9. {name:'measureUnitId'} 
10. ] 
11. }); 
var collectIndex_ds = new Ext.data.JsonStore({
url: '',
root: 'collectIndexs',
id: 'id',
fields:[
{name:'id'},
{name:'userViewId'},
{name:'timeType'},
{name:'measureUnitId'}
]
});
其回调函数使用为

Java代码
1.//使用回调方法,可以解决延迟加载的问题;这里使用回调时为了把userViewId项为空的加上默认值1 
2. collectIndex_ds.load({ 
3. callback :function(r,options,success){ 
4. if(success){ 
5. for(var i=0;i<r.length;i++){ 
6. var record = r[i]; 
7. var v = record.data.userViewId; 
8. if(v==null || v==""){ 
9. record.set("userViewId",1); 
10. } 
11. } 
12. } 
13. } 
14. }); 
//使用回调方法,可以解决延迟加载的问题;这里使用回调时为了把userViewId项为空的加上默认值1
collectIndex_ds.load({
callback :function(r,options,success){
if(success){
for(var i=0;i<r.length;i++){
var record = r[i];
var v = record.data.userViewId;
if(v==null || v==""){
record.set("userViewId",1);
}
}
}
}
});
Ext官网关于callback的解释

引用
callback : Function

A function to be called after the Records have been loaded. The callback is called after the load event and is passed the following arguments:

* r : Ext.data.Record[]
* options: Options object from the load call
* success: Boolean success indicator

 

因为回调都用的是异步技术,我们还可以直接采用同步处理,掉用的代码如下

unction syncCall(url, params) {
    var obj;
    var value;
    if (window.ActiveXObject) {
        obj = new ActiveXObject('Microsoft.XMLHTTP');
    } else if (window.XMLHttpRequest) {
        obj = new XMLHttpRequest();
    }
    obj.open('POST', url, false);
    obj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    obj.send(params);
    var result = Ext.JSON.decode(obj.responseText);
    return result;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值