2016-06-13 146 views
1

我剛開始使用ember2.5.1。我想嘗試創建一個簡單的服務,並讓組件實現它。問題是服務總是未定義的,我似乎無法調用它的方法。服務未定義?

/components/status-component.js

import Ember from 'ember'; 

export default Ember.Component.extend({ 
    logger: Ember.inject.service(), 

    actions: { 
    test() { 
     this.get('logger').log("testing");            
    } 
    } 
}); 

/services/logger.js

​​

其他信息:我也試圖使路由組件,我不知道這是搞亂了服務?我基本上有一條指向虛擬status-proxy-component.hbs的路由,其中​​包含{{status-component}}。 status-component.hbs是另一個文件。

任何想法,爲什麼這可能不工作?我只是想澄清從服務中丟失的東西,還是代理搞亂了它?

回答

3

您必須使用get()函數來獲取組件屬性。

this.get('logger').log("testing");

+0

哎呦,我還有我的測試代碼。這就是我最初使用的,它不起作用。然後我嘗試使用this.logger.log,這也沒有工作。我會更新我的問題。 – Taztingo

+1

奇怪,它應該工作。沒有什麼問題。看看這個twiddle:https://ember-twiddle.com/58588a0ce533b11d8a712d1a292fd845?openFiles=services.logger.js%2Ctemplates.components.log-button.hbs – Igor

+0

我最終從頭開始創建另一個項目,並能夠得到這個加工。感謝您的幫助,不知道以前的項目出了什麼問題。 – Taztingo

0

我曾與Ember 2.4.2相同的問題;該服務被定義在正確的位置,並且會出現在ember build輸出中,但不會出現在我運行的ember serve中。

問題原來是熱的重新加載沒有采取新的服務。殺死服務器並重新運行ember serve允許該服務正常工作。