我正在测试 extjs 4,我偶然发现了一些东西,我似乎无法弄清楚。
我有简单的对象关联:快照 - hasMany -> 模型
现在,我正在尝试使用 XTemplate 在 View 组件中显示此关联,所以我的 XTemplate 看起来像这样:
Ext.create('Ext.XTemplate',
'<tpl for=".">',
'<div class="snapshot" id="{id}">',
'<h1>{snapshot}</h1>',
'<p><span class="label">Created: </span>{dateString}</p>',
'<p><span class="label">Models</span></p>',
'<tpl for="models">',
'<p>{name} - {description}</p>',
'</tpl>',
'</div>',
'</tpl>',
'<div class="x-clear bottompad"></div>'
);
我的 JSON 响应如下所示(仅显示“快照”节点):
{
"id": 1,
"snapshot": "Snapshot 1",
"created": 1305806847000,
"models": [
{
"id": 1,
"name": "ABC",
"description": "A B C"
}, {
"id": 111,
"name": "ABCDD",
"description": "A B C XCXC"
}
]
}
由于 extjs 4 引入了模型的概念,我已经为 Snapshot 和 Model 创建了模型,并根据 API 文档创建了关联。
快照模型:
Ext.define('Snapshot', {
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'int'},
'snapshot',
{name: 'created',type: 'date', dateFormat: 'time' }
],
associations:[
{type: 'hasMany', model: 'Model', name: 'models'}
],
idProperty: 'id'
});
模型模型;P
Ext.define('Model', {
extend: 'Ext.data.Model',
belongsTo: 'Snapshot',
fields: [
{ name: 'id', type: 'int' },
{ name: 'snapshot_id', type: 'int' },
'name',
'description'
],
idProperty: 'id'
});
这就是我的问题所在 - 当我使用此设置时,执行 XTemplate 时不会显示我的模型,但是如果我从快照模型中删除关联并添加另一个名为“模型”的字段,它就可以正常工作。
使用关联时正确显示模型列表的最佳做法是什么?我是否必须使用嵌套模板和自定义函数来执行此操作?