ember-cli 0.2.3; ember-data 1.0.0-beta.15
我正在努力弄清楚如何在模板中显示belongsTo对象的属性。我在这里发现了一些类似的问题,但它们已经过时或者没有提供解决方案。
用户模型:
export default DS.Model.extend({
...
agency : DS.belongsTo("agency"),
});
代理商型号:
var Agency = DS.Model.extend({
...
users: DS.hasMany("user"),
});
用户序列化程序:
export default ApplicationSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
agencies: {
embedded: "always"
}
}
});
ApplicationSerializer:
export default DS.RESTSerializer.extend({});
JSON(用于索引路由)如下所示:
{
"users": [
{
"id" : "1",
"name" : "...",
"agency_id": "6",
"agencies" : [
{
"id" : "6",
"name": "...",
...
}
]
},
...
]
}
虽然Ember并不抱怨,但我甚至不确定数据是否正确,因为EmbeddedRecordsMixin的文档显示了belongsTo示例:
{
"post": {
"id": "1"
"title": "Rails is omakase",
"author": {
"id": "2"
"name": "dhh"
}
}
}
在任何情况下,我都可以看到代理商数据被包含在内,虽然它似乎必须是一个数组,尽管每个用户只有一个。我还没有找到准确说明预期格式的完整解释。
然而,主要的是:如何在模板中显示代理商名称?
不出所料,这不起作用:
{{#each user in model}}
<tr>
<td>{{user.get('agencies').firstObject().get("name")}}</td>
<td>{{user.name}}</td>
<td>{{user.email}}</td>
</tr>
{{/each}}
更新
我修改了数据,如下所示:
{
"users": [
{
"id" : "1",
"name" : "...",
"agency_id": "6",
"agency" : [
{
"id" : "6",
"name": "...",
...
}
]
},
...
]
}
...并将模型更新为代理商:DS.belongsTo(&#34; agency&#34;)和序列化器作为attrs:{agency:{embedded:&#34; always&#34;}}但是扔了一个错误。解决方案是从数据中删除agency_id。