AngularJS: обслуживание в разных файлах
Я изучаю AngularJS после организации, вдохновленной ng-шаблоном. Я создаю разные модули Angular для разных частей моего сайта.
Тем не менее, я хочу создать все общие элементы (службы и директивы) в основном модуле, а все они будут находиться в отдельных исходных файлах.
Этот код работает, но является ли модуль в sessionService.js ссылкой на тот же модуль, что и app.js, или он создает новый с тем же именем?
app.js
var app = angular.module('myApp', [...])
.config(...)
.controller(...);
sessionService.js
angular.module('myApp', [])
.service('SessionService', function() { ... });
Ответы
Ответ 1
Если вы вызываете angular.module('myApp', [])
несколько раз на одной странице, вы, вероятно, столкнетесь с ошибками или конфликтами. Я никогда не пробовал этого.
Однако, если вы уже запустили angular.module('myApp', [])
один раз. Затем вы можете запустить angular.module('myApp')
(обратите внимание: без []
) для извлечения (обратитесь к) модуля myApp
, который вы определили ранее.
Ответ 2
Именование и пространство имен важны для любого проекта. Попробуйте:
app.js:
var app = angular.module('myApp', ['sessionService', ...])...;
sessionService.js:
angular.module('sessionService', [])
.service('SessionService', ...);
Обратите внимание, что имя модуля находится в нижнем верблюжьем корпусе, а сам объект обслуживания - верхний верблюд. Это поможет вам избежать столкновения пространства имен. Надеюсь, что это поможет.
Ответ 3
в файле controller.js:
var app = angular.module('myApp',['newService']);
в service.js:
angular.module('newService',[])
.service('someService',function(){
return {
// return something
return null
}
}
});
Не забудьте включить оба файла js в свой HTML:
<script src="controllers/controller.js" type="text/javascript"></script>
<script src="services/service.js" type="text/javascript"></script>