我正在尝试加载一个我以前从未加载过的关系,但是似乎从来没有为此调用我的API。
我的设置是:
// routes/application.js
export default Route.extend({
model() {
return this.get('store').findRecord('post', 1, {include: 'user'});
}
});
// routes/comments.js
export default Route.extend({
model() {
let post = this.modelFor('application');
return post.get('user').get('actionHistory');
}
});
用户actionHistory
之前没有加载过,因此我希望服务器请求来获取它,但这从未实现。 user
可用。
// models/user.js
export default DS.Model.extend({
actionHistory: DS.hasMany('action-history'),
...
});
// models/action-history.js
export default DS.Model.extend({
user: DS.belongsTo('user'),
...
});
我尝试过多种方法来确保已加载post.load('user.actionHistory')
,post.get('user').reload({ include: 'action-history'})
,但没有任何效果。
我的设置或我尝试获取关系的方式有问题吗?
答案 0 :(得分:1)
正如Gaurav在评论中所述ember-datas findRecord
函数将返回一个需要首先解决的承诺。解决之后,您应该可以吸引用户。例如,以下代码将返回一个Promise作为您的模型,该模型将解析为用户的操作历史记录。
// routes/comments.js
export default Route.extend({
model() {
return this.modelFor('application').then(p => p.get('user.actionHistory'));
}
});
请注意,注释控制器/模板将不会从模型挂钩中收到承诺,因为ember将等待其首先解决。