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, затем буду работать