我只是想在我创建的模型中解析嵌套的 JSON。我为每个 JSON 节点创建了三个模型(Detalhe、Propriedade 和 Assinatura)。商店代理没有解析 Detalhe 模型的数据。
我还尝试将“映射”属性放在 hasMany 属性上,并具有相同的节点名称。它没有用。Ext.Template 也无法读取存储数据并填充查看器。
有什么建议么?
这是我的 JSON:
{
"details": {
"customProperties": [
{
"chave": "Data de Criação",
"valor": "30/10/2013"
},
{
"chave": "Nome",
"valor": "Blah Stuff"
}
],
"signatures": [
{
"nome": "Data de Criação",
"data": "30/10/2013"
},
{
"nome": "Nome do Cliente",
"data": "John Doe"
}
]
},
"success": true
}
以及解析代码:
Ext.define('Propriedade', {
extend: 'Ext.data.Model',
fields: ['chave', 'valor'],
belongsTo: 'Detalhe'
});
Ext.define('Assinatura', {
extend: 'Ext.data.Model',
fields: ['nome', 'data'],
belongsTo: 'Detalhe'
});
Ext.define('Detalhe', {
extend: 'Ext.data.Model',
hasMany: [
{model: 'Propriedade', name: 'customProperties'},
{model: 'Assinatura', name: 'signatures'}
]
});
var store = Ext.create('Ext.data.Store', {
id: 'customPropertiesStore',
model: 'Detalhe',
autoLoad: false,
proxy: {
type: 'ajax',
url: 'info.json',
reader: {
type: 'json',
root: 'details',
successProperty: 'success'
}
}
});
var docId = "some id";
var folders = "some folder";
store.load({
params: {docId: docId, folders: folders}
});
var tpl = new Ext.XTemplate(
'<tpl for="customProperties">',
'<div class="customPropertyItem">',
'<span><label>{chave}</label>: {valor}</span>',
'</div>',
'</tpl>',
'<tpl for="signatures">',
'<div class="signatureItem">',
'<span><label>{nome}</label>: {data}</span>',
'</div>',
'</tpl>'
);
var viewer = Ext.create('Ext.view.View', {
store: Ext.data.StoreManager.lookup('customPropertiesStore'),
tpl: tpl,
itemSelector: 'customPropertyItem',
emptyText: 'Nothing found.'
});