¿Es posible inyectar un servicio en otro servicio en angularJS?
fuente
¿Es posible inyectar un servicio en otro servicio en angularJS?
Si. siga la regla de inyección regular en angularjs.
app.service('service1', function(){});
//Inject service1 into service2
app.service('service2',function(service1){});
Gracias a @simon. Es mejor usar la inyección Array para evitar problemas de minificación.
app.service('service2',['service1', function(service1) {}]);
Si. Así (este es un proveedor, pero se aplica lo mismo)
module.provider('SomeService', function () {
this.$get = ['$q','$db','$rootScope', '$timeout',
function($q,$db,$rootScope, $timeout) {
return reval;
}
});
En este ejemplo, $db
es un servicio declarado en otra parte de la aplicación e inyectado en la $get
función del proveedor .
Para evitar cualquier confusión, creo que también vale la pena mencionar que si está utilizando cualquier otro servicio (por ejemplo, $ http, $ cookies, $ state) en su childService, entonces también debe declararlos explícitamente.
p.ej
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]);
}());
Puede declarar los servicios que está utilizando dentro de su hijo en una matriz y luego se inyectan automáticamente, o inyectarlos por separado con la anotación $ inject:
childService.$inject = ["$http", "$cookies", "parentService"];
angular.module("app").service("childService ", childService );
['service1', function(service1) {}]
ngmin
tarea gruñida asociada.