sve*_*tlo 1 json nested model extjs
我是Sencha Extjs的新手,我遇到了模型设计问题.以下是来自服务器的示例响应:
[
{
"success": "true",
"data": {
"sromain": [
{
"corporation": "DEV 1 s.r.o.",
"dbName": "dev_1_s_r_o_",
"prijmyCelk": "2 106,00 €",
"nakladyCelk": "2 049,00 €",
"ziskCelk": "57,00 €",
"neuhrVydCelk": "2 106,00 €",
"neuhrPrijCelk": "2 049,00 €",
"dph": "9,52 €"
}
],
"branches": [
{
"branch_name": "Bratislava",
"branch_code": "BA",
"strediskoprijmyCelk": "180,00 €",
"strediskonakladyCelk": "0,00 €",
"strediskoziskCelk": "180,00 €",
"strediskoneuhrVydCelk": "180,00 €",
"strediskoneuhrPrijCelk": "0,00 €",
"streddphCelk": "30,00 €"
},
{
"branch_name": "Banská Bystrica",
"branch_code": "BB",
"strediskoprijmyCelk": "600,00 €",
"strediskonakladyCelk": "0,00 €",
"strediskoziskCelk": "600,00 €",
"strediskoneuhrVydCelk": "600,00 €",
"strediskoneuhrPrijCelk": "0,00 €",
"streddphCelk": "100,00 €"
},
{
"branch_name": "Centrála",
"branch_code": "C",
"strediskoprijmyCelk": "666,00 €",
"strediskonakladyCelk": "213,00 €",
"strediskoziskCelk": "453,00 €",
"strediskoneuhrVydCelk": "666,00 €",
"strediskoneuhrPrijCelk": "213,00 €",
"streddphCelk": "75,52 €"
},
{
"branch_name": "Košice",
"branch_code": "KE",
"strediskoprijmyCelk": "420,00 €",
"strediskonakladyCelk": "1 836,00 €",
"strediskoziskCelk": "-1 416,00 €",
"strediskoneuhrVydCelk": "420,00 €",
"strediskoneuhrPrijCelk": "1 836,00 €",
"streddphCelk": "-236,00 €"
},
{
"branch_name": "Nitra",
"branch_code": "NR",
"strediskoprijmyCelk": "240,00 €",
"strediskonakladyCelk": "0,00 €",
"strediskoziskCelk": "240,00 €",
"strediskoneuhrVydCelk": "240,00 €",
"strediskoneuhrPrijCelk": "0,00 €",
"streddphCelk": "40,00 €"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
]
你能帮我设计一下这个JSON响应的功能模型吗?
小智 5
我不知道这背后的业务逻辑是怎么回事,但我所理解的是你需要一个商店,每个记录都应该有一个分支列表和一个sromains列表.如果是这种情况,您应该执行以下操作:
定义将包含分支列表和sromains列表的模型.我打电话给ResponseModel
Ext.define("ResponseModel", {
extend: 'Ext.data.Model',
fields: [],
hasMany: [{
model: 'Sromain',
name: 'sromain'
}, {
model: 'Branch',
name: 'branches'
}
]
});
Run Code Online (Sandbox Code Playgroud)
定义sromain模型
Ext.define("Sromain", {
extend: 'Ext.data.Model',
fields: [
'corporation',
'dbName',
'prijmyCelk',
'nakladyCelk',
'ziskCelk',
'neuhrVydCelk',
'neuhrPrijCelk',
'dph'],
belongsTo: 'ResponseModel'
});
Run Code Online (Sandbox Code Playgroud)
定义分支模型
Ext.define("Branch", {
extend: 'Ext.data.Model',
fields: [
'branch_name',
'branch_code',
'strediskoprijmyCelk',
'strediskonakladyCelk',
'strediskoziskCelk',
'strediskoneuhrVydCelk',
'strediskoneuhrPrijCelk',
'streddphCelk'],
belongsTo: 'ResponseModel'
});
Run Code Online (Sandbox Code Playgroud)
创建商店
var store = Ext.create('Ext.data.Store', {
model: "ResponseModel",
autoLoad: true,
data: data,
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'data'
}
}
});
Run Code Online (Sandbox Code Playgroud)
如果要查看第一个responseRecord的所有分支,则必须执行此操作
var firstRecord = store.getAt(0);
console.log(firstRecord.branches());
Run Code Online (Sandbox Code Playgroud)
与sromains同样的事情
console.log(firstRecord.sromain());
Run Code Online (Sandbox Code Playgroud)
在这里你可以找到一个工作的例子 http://jsfiddle.net/alexrom7/PVtkF/1/
| 归档时间: |
|
| 查看次数: |
5907 次 |
| 最近记录: |