Чи можна ввести одну послугу в іншу службу в angularJS?
Чи можна ввести одну послугу в іншу службу в angularJS?
Відповіді:
Так. дотримуйтесь правила регулярного введення в angularjs.
app.service('service1', function(){});
//Inject service1 into service2
app.service('service2',function(service1){});
Завдяки @simon. Краще використовувати ін’єкцію Array, щоб уникнути проблеми мінімізації.
app.service('service2',['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 );
['service1', function(service1) {}]