2015-10-17 54 views
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); 
    } 
}); 

這意味着,問題在於模型沒有解決/更新的某些原因。我在這裏做錯了什麼?

回答

0

好的,我試圖在我已經通過sessionUser服務訪問它時獲取公司模型。

//routes/opportunities/index.js 
import Ember from 'ember'; 

export default Ember.Route.extend({ 
    sessionUser: Ember.inject.service('session-user'), 
    model: function(){ 
     return this.get('sessionUser.user').then(user => user.get('company')); 
    } 
});