Czy jest możliwe wprowadzenie jednej usługi do innej usługi w angularJS?
angularjs
angularjs-service
Le Garden Fox
źródło
źródło
['service1', function(service1) {}]
ngmin
lub powiązanego zadania gruntownego.Tak. W ten sposób (to jest dostawca, ale to samo dotyczy)
module.provider('SomeService', function () { this.$get = ['$q','$db','$rootScope', '$timeout', function($q,$db,$rootScope, $timeout) { return reval; } });
W tym przykładzie
$db
jest to usługa zadeklarowana w innym miejscu aplikacji i wstrzyknięta do funkcji dostawcy$get
.źródło
Aby uniknąć nieporozumień, myślę, że warto również wspomnieć, że jeśli korzystasz z jakichkolwiek innych usług (np. $ Http, $ cookies, $ state) w swojej usłudze childService, to również musisz je wyraźnie zadeklarować.
na przykład
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]); }());
Możesz zadeklarować usługi, których używasz w swoim dziecku w tablicy, a następnie zostaną one wstrzyknięte automatycznie, lub wstrzyknąć je osobno z adnotacją $ inject:
childService.$inject = ["$http", "$cookies", "parentService"]; angular.module("app").service("childService ", childService );
źródło