Ember.js:加载相关的多个模型

标签 ember.js rsvp.js

因为 ember-guides 解释了如何在这样的路线上加载多个模型

export default Ember.Route.extend({
  model() {
    return Ember.RSVP.hash({
      songs: this.get('store').findAll('song'),
      albums: this.get('store').findAll('album')
    });
  }
});

我想知道如何仅加载第二个模型中的相关模型条目,例如加载所有歌曲,但仅加载歌曲中索引的专辑,如果我们假设歌曲模型包含此内容

...
albums: hasMany('album'),
...

我怎样才能做到这一点?

最佳答案

假设您的适配器和 JSON API 后端支持它,您可以简单地说:

export default Ember.Route.extend({
  model() {
    return Ember.RSVP.hash({
      songs: this.get('store').findAll('song', { include: 'albums' }),
    });
  }
});

通常,这会生成一个 GET/songs?include=albums,它告诉 JSON API 后端包含相关的专辑资源,根据 http://jsonapi.org/format/#fetching-includes .

在 Ember 方面,此功能记录在 http://emberjs.com/blog/2016/05/03/ember-data-2-5-released.html#toc_code-ds-finder-include-code .

如果以上不是一个选项,那么如果不构建自定义端点并使用 store.pushPayload,就无法在一个请求中加载所有内容。

关于Ember.js:加载相关的多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38570008/

相关文章:

javascript - 如何在进行转换时从 Ember 路由调用 Controller 操作?

javascript - 为什么在我的所有 Promise 成功后,使用 RSVP.js 库的 JavaScript Promise 会返回错误?

javascript - 如何将 RSVP 延迟与 WebSocket 结合使用?

javascript - JavaScript Promise Library在首次调用时使用AJAX请求加载JSON数据,然后在重复调用时从缓存的变量加载

javascript - Ember & 回复 : How to resolve nested relations in route's model function?

javascript - 使用 Ember.js 自动完成

javascript - Emberjs Handlebars 内容绑定(bind)编辑字段不起作用

javascript - 如何过滤数据列表以呈现到 emberjs 中的多个导出中

ember.js - 如何修改由 Ember Controller 管理的数组中的元素?

javascript - 链接 RSVP promise 的正确方法