Angularyjsの別のサービスにサービスを注入する
-
20-12-2019 - |
質問
AngularJSの他のサービスに1つのサービスを注入することは可能ですか?
解決
はい。angularjsの通常の注入規則に従ってください。
app.service('service1', function(){});
//Inject service1 into service2
app.service('service2',function(service1){});
.
@simonのおかげで。問題の低下を避けるためにアレイ注入を使用することをお勧めします。
app.service('service2',['service1', function(service1) {}]);
. 他のヒント
はい。このように(これはプロバイダですが、同じことが適用されます)
module.provider('SomeService', function () {
this.$get = ['$q','$db','$rootScope', '$timeout',
function($q,$db,$rootScope, $timeout) {
return reval;
}
});
.
この例では、$db
はアプリの他の場所で宣言されたサービスです。
プロバイダの$get
関数に注入されます。
混乱を避けるために、あなたがあなたの子供サービスの他のサービス(例えば$ HTTP、$ Cookies、$ State)を使用しているならば、あなたも明示的にそれらを宣言する必要があることも言及する価値があると思います。
e.g.
function() {
var childService = function($http, $cookies, parentService) {
// Methods inherited
this.method1Inherited = parentService.method1();
this.method2Inherited = parentService.method2();
// You can always add more functionality to your child service
angular.module("app").service("childService", ["$http", "$cookies", "parentService", childService]);
}());
.
子供の内側に使っているサービスを配列内に宣言してから、自動的に挿入されるか、$ injectアノテーションと別々に注入することができます。
childService.$inject = ["$http", "$cookies", "parentService"];
angular.module("app").service("childService ", childService );
. 所属していません StackOverflow