Ajax的異步請求有時候會帶來一些問題,如在Ext做的頁面中,需要加載一個JsonStore數據集,在緊跟着的代碼中可能就會對數據集進行訪問的操作,由於異步請求很可能導致數據未加載完就開始訪問,結果可能會不是想要的結果。
這裏load方法中提供了一個callback回調函數,可以解決延遲加載的問題,我們需要處理的一部分代碼可以放在callback函數中處理,這樣就解決了異步請求帶來的問題。如:
var collectIndex_ds = new Ext.data.JsonStore({
url: '',
root: 'collectIndexs',
id: 'id',
fields:[
{name:'id'},
{name:'userViewId'},
{name:'timeType'},
{name:'measureUnitId'}
]});
//使用回調方法,可以解決延遲加載的問題;這裏使用回調時爲了把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);
}
}
}
}
});
回調函數是在Store的load事件執行後才執行的,參數r表示返回的記錄集,opts表示調用load方法時的配置參數對象,success表示數據加載是否成功
參考:
在Ext的JsonStore的load方法中使用回調callback(轉)