store定义
方法一 加载已经有的数据
Ext.define('namespace.DemoStore', {
extend: 'Ext.data.Store',
model: 'namespace.DemoModel',
autoLoad: false,
data: []
});
方法二 远程加载数据
Ext.define('namespace.DemoStore', {
extend: 'Ext.data.Store',
model: 'namespace.DemoModel',
// 分组
groupField: 'group',
autoLoad: false,
data: []
// 上传时候携带的参数
params: {
para1:'',
para2:''
},
proxy: {
type: 'ajax',
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
url: '请求链接',
// 设置请求类型
actionMethods: { read: "POST" },
reader: {
type: 'json',
successProperty: 'status',//值取true或者false
totalProperty: 'totalcount',
root: 'data',
getResponseData: function(response) {
try {
data = Ext.decode(response.responseText);
// 根据返回的结果数据处理成model中定义的数据类型结构
// do something you want
return result;
} catch (ex) {
return this.getError(ex, error, this, response);
}
}
}
},
listeners: {
beforeload: function(store, operation) {
operation.params = Ext.encode(this.params);
}
}
});
store请求数据
方法一:对应于上面store定义的方法一
Ext.Ajax.request({
url: '请求地址',
headers: { 'Content-Type': 'application/json;charset=UTF-8' },
method: 'post',
scope: this,
params: Ext.encode(params),// 请求需要携带的参数
success: function(response, opts) {
var responseResult = Ext.decode(response.responseText);
var store = 上述定义的store
// 中间处理步骤,最终获取到与store中model相匹配的数据格式
// do something you want
// 调用如下方法接在数据,第一个参数就是要加载的数据,第二个参数如果是ture则会保留以前的数据,为false则不会保留
store.getStore().loadData(result, false);
},
failure: function() {
},
callback: function() {
}
});
方法二:对应于上面的store定义的方法二
var store = 上述定义的store
store.load(function(records, operation, success) {
if (success) {// 判断是否成功
// do something you want
}
});