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

是否有可能在angularJS注入一个服务到另一个服务?

是。 遵循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函数中。

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

例如

 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]); }()); 

您可以在数组中声明您正在使用的服务的内部服务,然后自动注入,或者分别使用$注释注入它们:

 childService.$inject = ["$http", "$cookies", "parentService"]; angular.module("app").service("childService ", childService );