Подтвердить что ты не робот

AngularJS, определяющий angular.module() несколько раз

Каково поведение вызова angular.module('myModule') несколько раз?

Например, я хочу определить свои маршруты и мои директивы в отдельных файлах .js.

Это безопасно?

например:

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

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

Кроме того, каково влияние определения зависимостей несколько раз? Является ли эта добавка или последняя в выигрыше?

например:

4b9b3361

Ответ 1

angular.module(имя [, требуется], configFn);
...
требует (необязательно) - {Array. =} - если задано, то создается новый модуль. Если не указано, то модуль извлекается для дальнейшей настройки. - angular.module docs

Я бы это интерпретировал следующим образом: вы можете определять зависимости только один раз - первый раз, когда вы вызываете angular.module для определенного модуля. Вы можете вызывать angular.module() несколько раз после этого, но параметр requires не должен указываться.

Ответ 2

Вы должны только создать свой модуль один раз. Согласно docs, если вы создадите модуль с уже существующим именем, он перезапишет предыдущий. (Так что в последний раз.)

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

Вы можете получить ваш модуль столько раз, сколько захотите, и в отдельных файлах, если хотите. Обычно вы будете получать свой модуль несколько раз, чтобы объявлять службы, контроллеры, директивы и т.д.

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

В AngularJS docs on Modules, см. раздел "Создание против поиска".

Ответ 3

Я новичок в angular, но это мое понимание: вы создаете один модуль в каждом файле с именем имени пространства имен, а в вашем основном модуле вам нужны эти модули.

// 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(....)