0
我使用Ember Simple Auth和一個服務,該服務被注入應用程序控制器以跟蹤當前登錄的用戶。我可以通過做使用{{accountName}}
爲當前登錄的用戶在我的應用程序模板如下:Ember路線模型中的承諾不解決/更新
//controllers/applications.js
import Ember from 'ember';
export default Ember.Controller.extend({
session: Ember.inject.service(),
userFromSession: Ember.inject.service('session-user'),
accountName: Ember.computed('session.data.authenticated.userId', function(){
this.get('userFromSession.user').then((user)=>{
if (Ember.isEmpty(user.get('company'))) {
this.set('accountName', user.get('firstName') + ' ' + user.get('firstName'));
} else {
this.set('accountName', user.get('company.name'));
}
});
})
});
我session-user
服務如下所示:
//services/session-user.js
import Ember from 'ember';
import DS from 'ember-data';
const { service } = Ember.inject;
export default Ember.Service.extend({
session: service('session'),
store: service(),
user: Ember.computed('session.data.authenticated.userId', function() {
const userId = this.get('session.data.authenticated.userId');
if (!Ember.isEmpty(userId)) {
return DS.PromiseObject.create({
promise: this.get('store').find('user', userId)
});
}
})
});
現在,用戶擁有的公司,一個公司有機會。我想根據當前登錄的用戶檢索公司機會。我該怎麼做呢?在我opportunities
路線我已經試過如下:
//routes/opportunities/index.js
import Ember from 'ember';
export default Ember.Route.extend({
sessionUser: Ember.inject.service('session-user'),
model: function(){
this.get('sessionUser.user').then((user)=>{
let companySlug = user.get('company.slug');
console.log(companySlug);
return this.store.findRecord('company', companySlug);
});
}
});
當使用我的模板{{model.opportunities}}
,它只是停留空白,看起來像的承諾從來沒有解決。但是,我可以看到在Ember Inspector中填充的數據以及控制檯日誌的預期輸出。此外,當我這樣做,它工作正常:
//routes/opportunities/index.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function(){
let companySlug = 'known-company-slug';
return this.store.findRecord('company', companySlug);
}
});
這意味着,問題在於模型沒有解決/更新的某些原因。我在這裏做錯了什麼?