angularjs, определяющий сервисы для одного и того же модуля в разных файлах

У меня есть два файла, в которых я определяю сервисы в своем угловом приложении, но когда я пытаюсь использовать их оба в своей директиве, я получаю сообщение об ошибке, в котором говорится, что поставщик услуг не найден для той директивы, которую я определяю второй. Кажется, что одна служба перезаписывает другую. Если я изменю определение модуля в service2.js на myapp.services2, то это сработает. Я думаю, я мог бы добавить несколько заводов к одному модулю таким образом. Может кто-то указать, что я делаю неправильно?

service1.js:

var services = angular.module('myapp.services',[]);
services.factory('Service1', function() {
    // service code
});

service2.js:

var services = angular.module('myapp.services',[]);
services.factory('Service2', function() {
    // service code
});

mydirective.js:

angular.module('myappdirective', []).directive('myapp', ['Service1', 'Service2',
function(service1,service2) {
    // directive code
}]);

2 ответа

Решение

Это из документов:

Помните, что использование angular.module('myModule', []) создаст модуль myModule и перезапишет любой существующий модуль с именем myModule. Используйте angular.module('myModule'), чтобы получить существующий модуль.

Найдено здесь: https://docs.angularjs.org/guide/module

Это возможно, однако будет подвержено ошибкам, поэтому не рекомендуется

Сделайте небольшую модификацию того, что вы уже делаете

Просто не объявляйте переменную модуля в других файлах, отличных от service1.js, и не помещайте определение модуля в отдельный файл и включайте эти JS-файлы в порядке Module.js, services.js, directive.js, затем буду работать

Другие вопросы по тегам