Ember Route Promise - 这是做我需要的吗? [英] Ember Route Promise - Is this doing what I need?
问题描述
导出默认值Ember.Route.extend({
model:function(params,transition){
var _this = this;
//设置一个散列传递给RSVP确保返回权限在出口和帐户查询之前
var getPermissions = {
权限: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;
})
} ;
返回Ember.RSVP.hash(getPermissions);
}
});
这个工作到目前为止,所有的模型都正确地在商店中填充,但是我有在控制器中的帐户和插座模型中访问属性的问题,但UI会呈现这些项目,而不会出现问题。
我猜这个承诺不是在做什么想要,这是确保在模型返回之前所有型号都可用。
任何帮助将不胜感激!
这个工作到目前为止,所有的模型都正确地填充在
存储中,但是我有访问属性的问题在帐户
和我的控制器中的插座模型中,但UI会呈现这些项目
,而不会出现问题。
您有问题帐户
和出口
,因为 Ember.RSVP.hash
在 this.store.query('permission',query)时解决
解析。
确保将所有承诺传递到 Ember.RSVP.hash
之后权限
已解决:
导出默认值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,
帐户:帐户,
权限:权限
}));
});
});
}
});
I have a route that returns 3 models. Each model needs to be resolved before the route returns the models. I've attempted this using the following pattern (some code redacted to aid clarity)
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);
}
});
This works in so far that all my models are correctly populated in the store, but I'm having issues with accessing attributes in the accounts and outlets models in my controller, but the UI renders these items without issue.
I'm guessing that this promise is not doing what I want, which is to ensure that ALL models are available before the models are returned.
Any help would be much appreciated!
This works in so far that all my models are correctly populated in the store, but I'm having issues with accessing attributes in the accounts and outlets models in my controller, but the UI renders these items without issue.
You have issues with accounts
and outlets
, because Ember.RSVP.hash
is resolved when this.store.query('permission', query)
resolves.
Make sure you pass all promises to Ember.RSVP.hash
after permissions
is resolved:
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
}));
});
});
}
});
这篇关于Ember Route Promise - 这是做我需要的吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!