だから、angular appで使用したいプラグインとライブラリがあり、(現在)99%のアプリで意図されているようにそれらの関数/メソッドを単に参照しています依存性注入を無視します。
(たとえば)日付のフォーマットと検証を処理するjavascriptライブラリ「MomentJS」があり、コントローラー、サービス、フィルターでアプリ全体で使用しています。私が学んだ方法は(AngularJSを使用して)関数(およびそのメソッド)を参照するサービスを作成し、そのサービスをコントローラーに注入することです。
問題は、サービスからフィルター、コントローラー、その他すべてまで、さまざまな種類のコンポーネントでこのライブラリを参照する必要があることです。だから、私の質問は、フィルター、サービス、およびコントローラー以外のすべてで依存関係注入をどのように行うのでしょうか?
これは可能ですか?これはさらに有益ですか?
どんな助けも大歓迎です:)
はい、フィルターとディレクティブに依存性注入を使用できます
例:
フィルタ:
app.filter('<filter>', ['$http', function(http){
return function(data){
}
}]);
指令:
app.directive('<directive>', ['$http', function(http){
return {
....
}
}]);
サービス:
app.factory('<service>', ['$http', function(http) {
var shinyNewServiceInstance;
return shinyNewServiceInstance;
}]);
完全を期すために、インジェクションを使用したサービスの例を次に示します。
app.service('<service>', ['$http', function($http) {
this.foo = function() { ... }
}]);
すでに存在する答えは正しく機能していますが、john papas angularスタイルガイドは$inject
サービスの Y091 :
フィルタ:
app.filter('<filter', MyFilter);
MyFilter.$inject = ['$http'];
function MyFilter() {
return function(data) {
}
}
指令:
app.directive('<directive>', MyDirective);
MyDirective.$inject = ['$http'];
function MyDirective() {
return {
...
}
}
工場:
app.factory('<factory>', MyFactory);
MyFactory.$inject = ['$http'];
function MyFactory() {
var shinyNewServiceInstance;
return shinyNewServiceInstance;
}
サービス:
app.service('<service>', MyService);
MyService.$inject = ['$http'];
function MyService() {
this.foo = foo;
function foo(){
...
}
}