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

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() { ... });
4b9b3361

Ответ 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>