我希望能够在同一个json中维护不同的商店,每个商店的模型都是相同的。每个商店都需要根据其根属性分配进行更新。请参阅下面的示例json,store和model,在这种情况下,每个商店都将根据json的root属性值(类别1,类别2等)进行更新。目标是能够将我的应用程序中的嵌套列表动态绑定到不同的商店,而不是调用setProxy来更改单个商店的URL设置。此外,json需要采用这种格式。感谢您的帮助,如果我能提供澄清或回答任何问题,请告诉我。
JSON:
{
"items": [
{
"name": "category 1",
"status": "",
"displaytext": "",
"items": [
{
"name": "",
"status": "",
"displaytext": "",
"items": [
{
"name": "",
"status": "",
"displaytext": "",
"items": [
{
"name": "",
"status": "",
"displaytext": "",
"leaf": true
}
]
}
]
}
]
},
{
"name": "category 2",
"status": "",
"displaytext": "",
"items": [
{
"name": "",
"status": "",
"displaytext": "",
"items": [
{
"name": "",
"status": "",
"displaytext": "",
"leaf": true
}
]
}
]
},
{
"name": "cateory 3",
"status": "",
"displaytext": "",
"items": []
},
{
"name": "category 4",
"status": "",
"displaytext": "",
"items": []
}
]
}
型号:
Ext.define('MyApp.model.myModel', {
extend: 'Ext.data.Model',
config: {
fields: [
{
name: 'name',
type: 'string'
},
{
name: 'status',
type: 'string'
},
{
name: 'displaytext',
type: 'string'
}
]
}
});
存储1,2,3等:
Ext.define('MyApp.store.storeCategory1', {
extend: 'Ext.data.TreeStore',
requires: [
'MyApp.model.myModel'
],
config: {
model: 'MyApp.model.myModel',
storeId: 'myStore',
autoLoad: false,
proxy: {
type: 'ajax',
url: '/path/to/file.json',
reader: {
type: 'json',
rootProperty: 'items'
}
}
}
});
答案 0 :(得分:0)
我认为您最好的选择是独立于Store的代理服务器请求。成功时,根据需要将数据拆分到不同的商店。以这种方式预处理数据是很好的,特别是如果您需要将一个大数据响应分成多个数据存储。例如:
Ext.Ajax.request({
url: 'path/to/file.json',
success: function(response){
// process server response here
var json = Ext.decode(response.responseText);
for(var i=0, l=json.items.length, i<l; i++){
// start distributing the data to your different stores here
}
}
});
希望这有帮助。