AngularJS Две директивы с тем же именем модуля

Можно ли создать две директивы с тем же именем модуля? Имея два файла

angular.module('fabTemplate', [])
    .directive('fabGallery', [function () {
....

и

angular.module('fabTemplate', [])
    .directive('fabVideo', [function () {
...

Вторая директива не будет распознана.

<fab-video />

ничего не делает. При изменении имени модуля работает хотя.

AngularJS говорит, что имя параметра (первый параметр модуля "method" )

Имя модуля для создания или извлечения.

Я полагаю, что это должно работать тогда...: S Angular ничего не печатает в консоли

Ответ 1

Если вы хотите получить модуль, вы должны использовать только первый параметр angular.module().

Из документов:

требуется (необязательно) [Array.]: если задано, то создается новый модуль. Если не указано, то модуль извлекается для дальнейшей настройки.

Ваш код должен выглядеть примерно так:

//Module definition:
angular.module('fabTemplate', []);

//Get the module and add the first directive:
angular.module('fabTemplate').directive('fabGallery', function () {});

//Get the module and add the second directive:
angular.module('fabTemplate').directive('fabVideo', function () {});

Ответ 2

Его также написано в начале документов:

При передаче двух или более аргументов создается новый модуль. Если передан только один аргумент, извлекается существующий модуль (имя, переданное как первый аргумент модулю).

Если вы хотите получить модуль, вы должны передать только имя модуля во второй раз, а не массив.

Итак, вы должны написать:

angular.module('fabTemplate', [])
    .directive('fabGallery', [function () {
        ....
    }]);

angular.module('fabTemplate')
    .directive('fabVideo', [function () {
        ....
    }]);

Обратите внимание, что вы можете написать:

angular.module('fabTemplate', [])
    .directive('fabGallery', [function () {
        ....
    }])
    .directive('fabVideo', [function () {
        ....
    }]);

или

var fabTemplate = angular.module('fabTemplate', []);

fabTemplate.directive('fabGallery', [function () {
    ....
}]);

fabTemplate.directive('fabVideo', [function () {
    ....
}]);

Ответ 3

В соответствии с документацией, которую вы связываете, когда вы добавляете второй параметр в метод module, он явно вызывает создание модуля, а не извлечение; на самом деле, этот параметр является необязательным, поэтому вы должны иметь возможность сделать что-то вроде этого, когда хотите получить только существующий модуль:

angular.module('fabTemplate')
    .directive('fabVideo', [function () {

Ответ 4

В одном модуле может быть несколько директив.

angular.module('myModule', []).directive('first', function() {
angular.module('myModule').directive('second', function() {

Вы должны убедиться, что квадратные скобки из первого объявления не находятся в других. Обратитесь к этому сообщению: Модуль angularJS module.directive не отвечает последовательно