因为 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/