2017-01-18 17 views
1

私はAngularをかなり新しくしています。私は$injectorと呼ばれるものがあることがわかります。その機能はgetです。特定のサービスを取得するために使用できます。たとえば:

app.factory('$myService', function($injector) { 
    return { ... 
      var http = $injector.get('$http'); 
      .... 
    } 
} 

私は変数httpに角度の$httpサービスを取得します。他の例では

は私が

app.factory('$myService', function($http) { 
    return {...} 

このようなものでも、工場に$httpサービスを注入ご覧ください。

2つの違いはありますか?これはいつ使うべきですか?

ありがとうございました!

+0

を参照してください[ "インジェクションとサービスロケータのパターン?」(http://stackoverflow.com/questions/1 557781/whats-the-difference-between-the-dependency-injection-and-service-locator-patte) - Angularのコンストラクタインジェクションは前者の例であり、 '$ injector'は後者の例です。非常に良い理由がない限り、コンストラクタインジェクションを使う方が良いでしょう。 –

+0

@ NikolaiJakovあなたの問題が解決した場合に回答を受け入れることができますか? :) – Mistalis

答えて

1

好きなものを使用してください。

私の意見では、あなたの依存関係(ここには$httpです)を直接入力すると読みやすくなります。


あなたも$injectアノテーションを使用することができます注:

​​
0

彼らはほぼ同じだが、どのようにあなたがそれらを異なって使用することができます。あなたがより複雑な何かをやっている、あなたはすべて知っていない場合は、しかし、

var controller = ['$http', function($http){ /* Controller stuff here */ }];

:あなたが時間の前方のための要件を知っている典型的なコントローラでは、パラメータベースの注入を行うことが一般的に良いでしょうあなたが(例えば、ユーザーが依存関係を指定することができますサブフレームワークを作成する)必要がある場合があります依存関係のため、あなたがプログラムで$injectorであなたの依存関係を注入することができるようにしたいことがあります。依存関係の違いは何

var controller = ['$scope','$injector', function($scope, $injector){ 
    $scope.dependencies = []; 
    $scope.injectFromString = function(dependency){ 
     $scope.dependencies.push($injector.get(dependency)); 
    }; 
}];`