Ember:访问模板中的侧载模型关系数据
Posted
技术标签:
【中文标题】Ember:访问模板中的侧载模型关系数据【英文标题】:Ember: Access sideloaded model relationship data in template 【发布时间】:2016-01-25 16:13:16 【问题描述】:我正在尝试根据侧载数据在模板中显示模型的关系,但似乎存在一些问题。使用 Ember Inspector,我看到关系是从数据中正确加载的。但是,数据并没有显示在页面上。
寻找有关从何处开始调试的解决方案或建议。非常感谢。
车把:
<dt>Categories</dt>
<dd>
<ul>
#each model.categories as |category|
<li> category.name </li>
/each
</ul>
</dd>
路线:
export default Ember.Route.extend(AuthenticatedRouteMixin,
model(params)
return this.store.findRecord('datasheet', params.id);
);
模型:
// app/models/datasheet.js
export default DS.Model.extend(
name: DS.attr('string'),
name_en: DS.attr('string'),
news: DS.attr('string'),
news_en: DS.attr('string'),
basic_information: DS.attr('string'),
basic_information_en: DS.attr('string'),
id_gradient_default: DS.attr('string'),
icon_name: DS.attr('string'),
icon_color: DS.attr('string'),
order: DS.attr('string'),
item_count: DS.attr('string'),
categories: DS.hasMany('category')
);
// app/models/category.js
export default DS.Model.extend(
name: DS.attr('string')
);
这是从适配器方法返回的 JSON:
"data":
"type": "datasheet",
"id": "21",
"attributes":
"name": "Projekty",
"name_en": "Projects",
"news": "",
"news_en": "",
"basic_information": "",
"basic_information_en": "",
"id_gradient_default": "27",
"icon_name": "pin_flag",
"icon_color": "",
"order": "14"
,
"relationships":
"categories": ["18", "19", "20", "51", "52"]
,
"included": [
"type": "category",
"id": "18",
"attributes":
"name": "Project"
,
"type": "category",
"id": "19",
"attributes":
"name": "Activity"
,
"type": "category",
"id": "20",
"attributes":
"name": "Project phase"
,
"type": "category",
"id": "51",
"attributes":
"name": "Program"
,
"type": "category",
"id": "52",
"attributes":
"name": "Milestone"
]
Ember Inspector 截图:
【问题讨论】:
试试这样定义categories: DS.hasMany('category', async: true, inverse: null)
抱歉,好像没有任何效果。
【参考方案1】:
这不是正确的 JSONAPI:
"relationships":
"categories": ["18", "19", "20", "51", "52"]
这是正确的 JSONAPI 等效项:
"relationships":
"categories":
data: [
id: '18',
type: 'category'
,
id: '19',
type: 'category'
,
id: '20',
type: 'category'
,
id: '51',
type: 'category'
,
id: '52',
type: 'category'
]
因此您的数据已加载但未正确链接。当您检查 categories
关系时,您可以在 ember-inspector 中看到这一点。
【讨论】:
宾果游戏!谢谢,@Lux,你是英雄。以上是关于Ember:访问模板中的侧载模型关系数据的主要内容,如果未能解决你的问题,请参考以下文章