为什么在angularjs中定义多个具有相同名称的模块

时间:2014-06-26 07:41:33

标签: javascript angularjs

我是angularjs的新人。我正在寻找一个应用程序代码。

<html> 
 .....
<script src="/my/app.main.js"></script>
<script src="/my/app.messages.js"></script>
<script src="/my/app.misc.js"></script>
<script src="/my/app.properties.js"></script>

并在这些javascript filse中包含angularjs模块同名。

main.js文件

(function () {
    'use strict';

    var app = angular.module('ngCookService');

    app.run([.....
        function (....) {            

        }]);
})();

messages.js文件

(function () {
    "use strict";

    var app = angular.module('ngCookService');

    app.config(['$stateProvider', function ($stateProvider) { 
       ................
    }]);
})();

所有这些js文件都包含 ngCookService 模块。并且模块在自调用函数中定义。

这个系统如何运作?先前定义的模块是否覆盖?或新定义的 app 模块会杀死早期的对象?

1 个答案:

答案 0 :(得分:6)

当仅使用模块名称调用时,angular.module()是一个getter方法,并检索具有该名称的现有模块。因此,调用angular.module('ngCookService')不会覆盖或替换模块。

为了让getter工作,在它之前的某个地方必须调用setter。这是通过使用多个参数调用angular.module()来完成的(例如,所需模块的列表)......

angular.module('ngCookService', ['ngRoute']);

如果多次调用setter,则 模块被覆盖。