Czy jest możliwe wprowadzenie jednej usługi do innej usługi w angularJS?
Czy jest możliwe wprowadzenie jednej usługi do innej usługi w angularJS?
Odpowiedzi:
Tak. postępuj zgodnie z regułą regularnego wstrzykiwania w angularjs.
app.service('service1', function(){});
//Inject service1 into service2
app.service('service2',function(service1){});
Dzięki @simon. Lepiej jest użyć wstrzykiwania tablicy, aby uniknąć problemu z minimalizacją.
app.service('service2',['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
.
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 );
['service1', function(service1) {}]