¿Es posible inyectar un servicio en otro servicio en angularJS?
¿Es posible inyectar un servicio en otro servicio en angularJS?
Respuestas:
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) {}]);
ngmin
tarea gruñida asociada.
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) {}]