entre - servicios angularjs
Inyectar un servicio en otro servicio en angularJS (3)
¿Es posible inyectar un servicio en otro servicio en angularJS?
Para evitar cualquier confusión, creo que también vale la pena mencionar que si está utilizando otros servicios (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 inyectándolos por separado con la anotación $ inject:
childService.$inject = ["$http", "$cookies", "parentService"];
angular.module("app").service("childService ", childService );
Sí. De esta manera (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 y se inyecta en la función $get
del proveedor.
Sí. sigue 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 Inyección de matriz para evitar problemas menores.
app.service(''service2'',[''service1'', function(service1) {}]);