Ist es möglich, einen Dienst in angleJS in einen anderen Dienst einzufügen?
Ist es möglich, einen Dienst in angleJS in einen anderen Dienst einzufügen?
Antworten:
Ja. Befolgen Sie die reguläre Injektionsregel in Angularjs.
app.service('service1', function(){});
//Inject service1 into service2
app.service('service2',function(service1){});
Danke an @simon. Es ist besser, die Array-Injektion zu verwenden, um Probleme zu minimieren.
app.service('service2',['service1', function(service1) {}]);
ngmin
zugehörige Grunzaufgabe verwenden.
Ja. So (dies ist ein Anbieter, aber das Gleiche gilt)
module.provider('SomeService', function () {
this.$get = ['$q','$db','$rootScope', '$timeout',
function($q,$db,$rootScope, $timeout) {
return reval;
}
});
In diesem Beispiel $db
wird ein Dienst an einer anderen Stelle in der App deklariert und in die $get
Funktion des Anbieters eingefügt.
Um Verwirrung zu vermeiden, ist es meines Erachtens auch erwähnenswert, dass Sie, wenn Sie andere Dienste (z. B. $ http, $ cookies, $ state) in Ihrem childService verwenden, diese auch explizit deklarieren müssen.
z.B
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]);
}());
Sie können die Dienste, die Sie in Ihrem Kind verwenden, entweder in einem Array deklarieren und sie werden dann automatisch injiziert, oder Sie können sie separat mit der Annotation $ inj injizieren:
childService.$inject = ["$http", "$cookies", "parentService"];
angular.module("app").service("childService ", childService );
['service1', function(service1) {}]