質問

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 );
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top