對于Store的處理
每個store配置的時候,配上load監聽,加載時處理:
usrStore : {
model : 'App.model.Usr',
autoLoad : false,
proxy : {
type : 'ajax',
url : 'usr/getUsrs.do',
reader : {
rootProperty : 'data'
}
},
listeners:{
load : 'onStoreLoad'
}
}
onStoreLoad : function(store, records, successful, operation, eOpts) {
if (!successful) {
//直接提示系統維護
} else {
this.validSessionByStore(this, operation);
}
},
validSessionByStore:function(comp,operation){
var resp = operation.getResponse();
if (resp) {
var rst = Ext.decode(resp.responseText || {});
if (!rst['session']) {//session逾時
this.reLogin(comp);//彈出登入框,重新登入
return false;
}
}
return true;
}
封裝官方基本的success和failure兩個方法
不管是ajax還是form的submit都有success和failure兩個回調方法,是以要對這兩個回調進行瘋狂,友善ajax和submit的調用:
success:function(data,comp,_success,_failure,ctl){
if (!data['success']) {//失敗
this.failure(data, comp,_failure);
} else if (data['session']) {//成功
if (Ext.typeOf(_success) === 'function') {
_success(data, comp);
}
} else { //session逾時
this.failure(data, comp,_failure);
this.reLogin(comp);//彈出登入框,重新登入
}
},
failure:function(data,comp,_failure){
if (Ext.typeOf(_failure) === 'function') {
_failure(data, comp);//執行自定義失敗該執行的方法
} else {
//直接提示系統維護
}
},
對于Ajax的處理
ajax : function(uri ,params, success, failure ,ctrl) {
var me = this;
return Ext.Ajax.request({
url : uri,
params : params,
async : false,
success : function(response, opts) {
var result = Ext.decode(response.responseText) || {};
me.success(result ,ctrl,success,failure);
},
failure : function(response, opts) {
me.failure(response,ctrl,failure);
}
});
},
對于Form送出的submit的處理
getFormSubmitCfg : function(success, failure, params) {
var me =this;
return {
params : params,
submitEmptyText : false,
success : function(form, action) {
me.success(action.result ,form,success,failure);
},
failure : function(form, action) {
me.failure(action.result ,form,failure);
}
};
}