对于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']) {
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 {
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);
}
});
},
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);
}
};
}