Có thể đưa một dịch vụ này vào một dịch vụ khác trong angleJS không?
Có thể đưa một dịch vụ này vào một dịch vụ khác trong angleJS không?
Câu trả lời:
Đúng. tuân theo quy tắc tiêm thông thường trong anglejs.
app.service('service1', function(){});
//Inject service1 into service2
app.service('service2',function(service1){});
Cảm ơn @simon. Tốt hơn là sử dụng Array injection để tránh vấn đề thu nhỏ.
app.service('service2',['service1', function(service1) {}]);
ngmin
hoặc tác vụ grunt liên quan.
Đúng. Như thế này (đây là một nhà cung cấp, nhưng điều tương tự cũng áp dụng)
module.provider('SomeService', function () {
this.$get = ['$q','$db','$rootScope', '$timeout',
function($q,$db,$rootScope, $timeout) {
return reval;
}
});
Trong ví dụ này, $db
là một dịch vụ được khai báo ở nơi khác trong ứng dụng và được đưa vào $get
chức năng của nhà cung cấp .
Để tránh nhầm lẫn, tôi nghĩ cũng cần nhắc lại rằng nếu bạn đang sử dụng bất kỳ dịch vụ nào khác (ví dụ: $ http, $ cookies, $ state) trong childService của bạn, thì bạn cũng cần phải khai báo chúng một cách rõ ràng.
ví dụ
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]);
}());
Bạn có thể khai báo các dịch vụ mà bạn đang sử dụng bên trong con mình trong một mảng và sau đó chúng được đưa vào tự động hoặc tiêm chúng riêng biệt với chú thích $ injection:
childService.$inject = ["$http", "$cookies", "parentService"];
angular.module("app").service("childService ", childService );
['service1', function(service1) {}]