javascript - 为什么 2 个不同的模块在添加为依赖于第三个模块时可以相互访问?

标签 javascript angularjs module mean

我的 AngularJS 应用程序中有 3 个模块,例如mainhomeproductmain 模块有 homeproduct 模块作为依赖(ng.module('main', ['home', 'product' ])) 而 homeproduct 模块没有任何依赖关系(ng.module('product', []) ng.module('phome', [])),还是product模块可以访问home模块服务?为什么???

下面是我的应用程序的示例代码,它具有相同的场景和相同的问题。这是 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>

最佳答案

答案很简单。 Angular 不会将模块的内容限定在模块本身。我在某处读到有人讨论过添加此功能,但我还没有看到它实现。

更糟糕的是,应用于一个导入模块的 Controller 在您的应用中将是唯一的。例如,我曾经使用过 angular-ui bootstrap,我团队中的某个人添加了一个 AlertController。当 Controller 从未被击中时,我们感到非常困惑,但这是因为 angular-ui 已经定义了 Controller 。

所以这不仅仅是可见性的问题,也是可维护性和命名的问题。

模块上定义的所有内容都是公开的。

关于javascript - 为什么 2 个不同的模块在添加为依赖于第三个模块时可以相互访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30570505/

相关文章:

python - 模块作为函数参数

javascript - jQuery 事件委托(delegate)不适用于 jQuery UI 日期选择器

javascript - 在单击按钮或更新字段上运行代码,但不能同时运行两者

javascript - 使用 REGEX 发送电子邮件

javascript - 使用 jquery 为微调器设置延迟时间

javascript - 是否有与 PHP 的 include 等效的 Node.js,以便包含的代码可以访问父文件的变量?

python - 无法在 PyPi 中输入密码

css - 如何将 Angular json模型设置为css

angularjs - 如何从angularjs表单中获取日期值

javascript - Angularjs:更新ng-model时选择不更新