2016-06-13 6 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

私はエンバー2.4.2と同じ問題を抱えていました。サービスは正しい場所に定義されており、ember buildの出力に表示されますが、実行中のember serveには表示されません。

新しいサービスでは、問題がホットリロードであることが判明しました。サーバを強制終了してember serveを再実行すると、サービスは正常に動作します。