2012-12-05 23 views
12

私は希望です。angularjs - ランタイム依存性注入?

参考のためplunkerです。

私はコンパイル時に依存関係を指定する方法を知っています(MainCtrlInjectedコントローラを参照)。しかし、どうやって実行時に依存関係をプルダウンし、その依存関係の名前を付けるのですか? (MainCtrlInjectedRuntimeコントローラを参照)

答えて

16

http://plnkr.co/edit/iVblEU?p=previewコード

:あなたは、コンパイル時に知られている依存関係名のために正しい

app.controller('MainCtrlInjectedRuntime', [ 
    '$scope', 
    '$injector' 
    ($scope, $injector) -> 

    nameValHandle = 'nameVal' 

    # !!! This is how you inject at runtime 
    name = $injector.get(nameValHandle) 

    $scope.name = name 
]) 
+0

ねえ、それは簡単でした、ありがとう! –

+1

私は、インジェクタが既知のオブジェクトを注入するために使用できること、インジェクタが新しい依存性をモジュールに追加できることを見ていますか?ウィジェットを動的にプリロードするときに、アプリに追加することができるので、アプリはそれを表示できますか? – Sander

0

私はangularjsに入っていますが、この状況を処理する適切な方法はMainCtrlInjectedRuntimeにサービスを注入することだと思います。注入されたサービスにはsomehowGetNameFromValueメソッドがあります。私のフォークplunkerをチェック

:あなたは実行時に値を取得するために$インジェクタを使用することができます

+0

実行時にはこれが便利になることがあります。私が使用しているのは、ディレクティブで、ディレクティブを構成するのに役立つ 'value'依存関係の名前に属性を設定していることです。私の指示では、依存関係を動的に解決します。 –