Tôi gặp 3 module trong AngularJS tôi App, ví dụ main
, home
và product
. main
mô-đun có home
và product
mô-đun như phụ thuộc (ng.module('main', ['home', 'product'])
) trong khi home
và product
module không có bất kỳ phụ thuộc (ng.module('product', [])
ng.module('phome', [])
), vẫn product
mô-đun có thể truy cập dịch vụ home
module? TẠI SAO???Tại sao 2 Module khác nhau có thể truy cập lẫn nhau khi được thêm vào phụ thuộc vào module thứ ba?
Dưới đây là mẫu mã của ứng dụng của tôi, mà là có kịch bản tương tự và cùng một vấn đề. Và đây là JSfiddle Link.
<!DOCTYPE html>
<html ng-app="main">
<body ng-controller="MainController as mainController">
{{mainController.name}}
<script type="application/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script>
(function (ng) {
var homeModule = ng.module('home', []);
homeModule.service("HomeService", [function() {
var homeService = this;
homeService.getName = function() {
return "Home Service";
}
}]);
var productModule = ng.module('product', []);
productModule.service("ProductService", ["HomeService", function (HomeService) {
var productService = this;
productService.getName = function() {
return "Product Service - " + HomeService.getName();
};
}]);
var mainModule = ng.module('main', ['home', 'product']);
mainModule.controller("MainController", ['ProductService', function (ProductService) {
var mainController = this;
mainController.name = ProductService.getName();
}]);
})(angular);
</script>
</body>
</html>
Điều này là do dịch vụ nhà được định nghĩa là một biến toàn cầu có thể được truy cập từ bất cứ nơi nào trong ứng dụng. Thử đọc http://tutorials.jenkov.com/angularjs/dependency-injection.html để biết thêm thông tin. – vipulsharma