我想在Sencha Touch 2项目的数据视图中显示嵌套的JSON数据。 JSON包含具有进度的服务请求的详细信息。与Sencha Architect在数据视图中嵌套的JSON
的JSON:
{
"success": true,
"message": "Request retrieved with id:789",
"data": {
"id": 789,
"description": "request description",
"subject": "request subject",
"progresses": [
{
"description": "progress description 1"
},
{
"description": "progress description 2"
},
{
"description": "progress description 3"
}
]
}
}
用于获取数据,我有两个型号,一个是requestdetails,一个进步,当然是一个商店。
我的店:
Ext.define('MyApp.store.RequestStore', {
extend: 'Ext.data.Store',
requires: [
'MyApp.model.RequestModel'
],
config: {
autoLoad: true,
autoSync: true,
model: 'MyApp.model.RequestModel'
}
});
而且我的模型:
Ext.define('MyApp.model.RequestModel', {
extend: 'Ext.data.Model',
uses: [
'MyApp.model.ProgressModel'
],
config: {
fields: [
{
name: 'id'
},
{
name: 'description'
},
{
name: 'subject'
}
],
hasMany: {
associationKey: 'progresses',
model: 'MyApp.model.ProgressModel'
},
proxy: {
type: 'rest',
url: 'http://myurl.com/rest/request/789',
reader: {
type: 'json',
rootProperty: 'data'
}
}
}
});
Ext.define('MyApp.model.ProgressModel', {
extend: 'Ext.data.Model',
uses: [
'MyApp.model.RequestModel'
],
config: {
fields: [
{
name: 'description'
}
],
belongsTo: {
model: 'MyApp.model.RequestModel'
}
}
});
这是我的看法:
Ext.define('MyApp.view.MyDataView', {
extend: 'Ext.dataview.DataView',
config: {
store: 'RequestStoreId',
itemTpl: [
'<div>',
' <div>ID</div>',
' <div>{id}</div>',
' ',
' <div>Subject</div>',
' <div>{subject}</div>',
' ',
' <div>Description</div>',
' <div>{description}</div>',
'</div>',
'',
'<h2><b>Progress:</b></h2>',
'<tpl for="progressmodels">',
' <div>',
' <div>{description}</div>',
' </div>',
'</tpl>'
]
}
});
显示id
,requestType
,description
和subject
工作正常。在进展情况下,我希望显示所有进度描述,但现在只显示第一个描述。
我尝试了很多,并搜索互联网来解决它,但我无法弄清楚它是什么。
我在这里做错了什么?我想念什么?有同样的问题的人吗?
在此先感谢!
您是否找到解决方案了?我也有和你一样的问题 – Eli
是的,我有。 ''为我工作而不是''。唯一的问题是,你不能在模型中的进度节点(例如日期)中转换数据。您必须在Xtemplate本身中执行此操作。 –
weerd2