在angularJS中将服务注入另一个服务

时间:2014-01-08 19:27:22

标签: angularjs angularjs-service

是否可以在angularJS中将一项服务注入另一项服务?

3 个答案:

答案 0 :(得分:114)

是。遵循angularjs中的常规注射规则。

app.service('service1', function(){});

//Inject service1 into service2
app.service('service2',function(service1){});

感谢@simon。最好使用Array注入来避免缩小问题。

  app.service('service2',['service1', function(service1) {}]);

答案 1 :(得分:8)

是。像这样(这是一个提供者,但同样适用)

    module.provider('SomeService', function () {


    this.$get = ['$q','$db','$rootScope', '$timeout', 
                function($q,$db,$rootScope, $timeout) {
          return reval;
    }
    });

在此示例中,$db是在应用程序的其他位置声明的服务 注入提供者的$get函数。

答案 2 :(得分:5)

为了避免混淆,我认为值得一提的是,如果您在childService中使用任何其他服务(例如$ http,$ cookies,$ state),那么您还需要明确声明它们。 / p>

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