我正在开发一个Ember-js应用程序,我想将每篇“文章”链接到下一篇和前一篇文章。我想根据JSON API工作。
我已设法加载/展示文章的(博客)作者,并加载并显示下一篇(相关)文章的“预告片”。这很好。
现在,下一篇文章应该相当简单:如何加载文章中定义的“链接”?如何将它们添加到我的模型中或在我的Handlebars模板中以任何其他方式显示它们?
让我从我的JSON-repsonse(有效载荷)中提取一下:
{
"data": {
"type": "blogs",
"id": "5",
"links": {
"previous": "blogs/4",
"self": "blogs/5",
"next": "blogs/6"
},
"attributes": {…}, // title, subtitle, bodytext, etc.
"relationships": {
…
},
最重要的问题是如何从JSON回复中获取此“自我”链接。这些数据可以直接从“模型”中使用吗?
我的模型如下:
//models/blog.js
import DS from 'ember-data';
export default DS.Model.extend({
nid : DS.attr('string'),
title : DS.attr('string'),
subtitle : DS.attr('string'),
intro : DS.attr('string'),
…
author : DS.belongsTo('person'),
next : DS.attr('next'),
previous : DS.belongsTo('person')
});
UPDATE 正如@bungee指出的那样,有效载荷中存在一个错误(针对JSONAPI规范)。 'links'数组应该是'数据'的兄弟,而不是后代。然而,在Ember 2.8中,仍然不会让Ember“吃掉”它。 :)
答案 0 :(得分:1)
我假设您正在使用数据适配器?如果是这样,您是否创建了与您显示的数据结构相对应的模型。对我而言,它看起来不是标准的余烬休息数据结构,但它取决于您正在使用的适配器。此外,您似乎可以考虑将previous,self和next设置为数据的直接参数..?
答案 1 :(得分:1)
根据Ember社区(Slackware)的帮助,我发现目前这是不可能的:
https://github.com/mharris717/ember-cli-pagination/issues/144
https://emberigniter.com/pagination-in-ember-with-json-api-backend/
回答Bungee的评论:JSON-API(http://jsonapi.org/)指定这些以前的',' self'和' next'链接应位于有效负载的根目录下,但我们不能
我们确实可以通过在“数据”下移动它们来解决问题。 →'属性'在有效负载中如果能够存在不遵守JSON-API规范的想法。
顺便说一句:来自JSON-API的引用:
Pagination links MUST appear in the links object that corresponds to a collection. To paginate the primary data, supply pagination links in the top-level links object.
[…]
The following keys MUST be used for pagination links:
first: the first page of data
last: the last page of data
prev: the previous page of data
next: the next page of data