没有automagic,你愿意do.i在this project上有同样的问题,我想出了如何从JSON响应中自动创建多个商店。在你的网格被加载之前输入以下代码。在extjs4中,我把下面的代码在app.js这样的商店将被创建时,应用程序是initialized.The商店将被自动创建,依赖于什么JSON回报:
Ext.Ajax
.request({
url : './account/getadminstores',
callback : function(options, success, response) {
var json = Ext.decode(response.responseText);
var adminStores = new Array();
// setup and intitialize on the fly stores
for (var key1 in json) {
var storeFields = new Array();
for (var key2 in json[key1]) {// if
// (i==1){break;}
// console.log(key2);
for (var key3 in json[key1][key2]) {
storeFields.push(key3);
}
break;
}
;
Ext.define('MA.store.' + key1, {
extend : 'Ext.data.Store',
fields : storeFields,
storeId : key1,
id : 'MA.store.' + key1,
data : json[key1],
proxy: {
type: 'ajax',
url : './account/getadminstores',
reader: {
type: 'json',
root: key1
}
},
autoLoad: true
});
Ext.create('MA.store.' + key1);
}
;
创建存储你的情况是MA.store.root1
和MA.store.root2
其中MA是你的应用程序名称空间(并且你应该将其更改为你的应用程序名称空间)。此代码用于extjs4,并且您可能需要对其进行一些修改使它在旧版本中工作。希望它有帮助。
我们可以使用, '{ “成功”:真实, 中 “root1”: \t \t { \t \t “ID”:1, \t \t “名”: “乔恩”, \t \t “姓”: “Doe的” \t \t}, \t \t \t { \t \t “ID”:2, \t \t “名称”: “Jane”,请 \t \t “姓”: “Doe的” \t \t} \t \t], \t “根-2”:[ \t \t { \t \t “ID”:1, \t \t “名”: “杰克”, \t \t “姓”: “布朗” \t \t}, \t \t \t { \t \t “ID”:2, \t \t “名”: “克里斯”, \t \t “姓”: “布朗” \t \t} \t \t] }' – vtokmak 2012-02-17 22:54:03