AngularJS多次定义angular.module()

时间:2013-01-17 02:46:06

标签: javascript angularjs

多次调用angular.module('myModule')的行为是什么?

例如,我希望在单独的.js文件中定义我的路由和指令。

这样安全吗?

例如:

//routes.js
angular.module('app',['$strap'])
   .config(function($routeProvider, $locationProvider) {
     ...
   });

//directives.js
angular.module('app')
    .directive('formInput', function() {
...

此外,多次定义依赖项的影响是什么?这是添加剂还是最后一次胜利?

例如:

3 个答案:

答案 0 :(得分:34)

  

angular.module(name [,requires],configFn);   
...
  requires(可选) - {Array。=} - 如果指定,则创建新模块。如果未指定,则检索模块以进行进一步配置。    - angular.module docs

我会解释如下:您只能定义一次依赖项 - 第一次为特定模块调用angular.module。之后可以多次调用angular.module(),但不能指定requires选项。

答案 1 :(得分:15)

您应该只创建您的模块一次。根据{{​​3}},如果您创建一个名称已存在的模块,它将覆盖前一个模块。 (所以最后胜利。)

angular.module('app', []);

您可以根据需要检索您的模块,如果您愿意,可以在单独的文件中。您通常会多次检索模块以声明服务,控制器,指令等。

angular.module('app').service('myService', ...);
angular.module('app').controller('myController', ...);
angular.module('app').directive('myDirective', ...);

docs中,请参阅“创建与检索”一节。

答案 2 :(得分:5)

我是角色的新手,但这是我的理解:你在每个文件中创建一个带有命名空间模块名称的模块,在你的主模块中你需要这些模块。

// in main app.js file
var app = angular.module('myapp', 
          ['myapp.routers', 'myapp.directives', 'myapp.filters']);

// in filters.js
angular.module('myapp.filters', []).filter(....)

// in routers.js
angular.module('myapp.routers', []).router(....)

// in directives.js
angular.module('myapp.directives', []).directive(....)