Можно ли вставить одну службу в другую в angularJS?
angularjs
angularjs-service
Le Garden Fox
источник
источник
['service1', function(service1) {}]
ngmin
или связанную задачу ворчания.Да. Вот так (это провайдер, но применимо то же самое)
module.provider('SomeService', function () { this.$get = ['$q','$db','$rootScope', '$timeout', function($q,$db,$rootScope, $timeout) { return reval; } });
В этом примере
$db
это служба, объявленная где-то в приложении и внедренная в$get
функцию поставщика .источник
Чтобы избежать путаницы, я думаю, также стоит упомянуть, что если вы используете какие-либо другие службы (например, $ http, $ cookies, $ state) в своем childService, вам также необходимо явно объявить их.
например
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 );
источник