我有一条返回3个模型的路线。在路径返回模型之前,需要解析每个模型。我尝试使用以下模式(为了清晰起见,编辑了一些代码)
export default Ember.Route.extend({
model: function(params, transition) {
var _this = this;
//Set up a hash to pass to RSVP. Ensures that permissions are returned BEFORE outlet and account query
var getPermissions = {
permission : this.store.query('permission',query).then(function(permissions){
var outlets = _this.store.findByIds('outlet', permissions.map REDACTED);
var accounts = _this.store.findByIds('account', permissions.map REDACTED);
var result = {permissions, accounts, outlets};
return result;
})
};
return Ember.RSVP.hash(getPermissions);
}
});
到目前为止,我的所有模型都已在商店中正确填充,但我在控制器中的帐户和插座模型中访问属性时遇到问题,但UI会毫无问题地呈现这些项目。< / p>
我猜这个承诺没有做我想要的,这是为了确保在返回模型之前所有模型都可用。
非常感谢任何帮助!
答案 0 :(得分:2)
到目前为止,我的所有模型都正确填充了 存储,但我在访问帐户中的属性时遇到问题 和我的控制器中的插座模型,但UI呈现这些项目 没有问题。
accounts
和outlets
存在问题,因为Ember.RSVP.hash
解析后this.store.query('permission', query)
已解决。
确保在Ember.RSVP.hash
解决后将所有承诺传递给permissions
:
export default Ember.Route.extend({
model(params, transition) {
return new Promise((resolve) => {
this.store.query('permission', query).then((permissions) => {
let outlets = this.store.findByIds('outlet', permissions.map REDACTED),
accounts = this.store.findByIds('account', permissions.map REDACTED);
resolve(Ember.RSVP.hash({
outlets: outlets,
accounts: accounts,
permissions: permissions
}));
});
});
}
});