angular Uncaught ReferenceError: служба не определена

У меня есть следующий компонент, в который я пытаюсь внедрить службу:

angular.
  module('phoneList').
  component('phoneList', {
    templateUrl: '/static/common/angular/phone-list/phone-list.template.html',
    controller: ['$http', 'authenticationService',
      function PhoneListController($http, authenticationService) {
        var self = this;


          authenticationService.authenticate().then(function(){
                console.log('it worked!!!!!!!!');
                }); 

      }
    ]
  });

Сервис выглядит так:

angular.module('authentication').factory('authenticationService', function($http, $se){
    function authenticate(){

        $http.post('/o/token/', data, config)
              .success(function (data, status, headers, config) {
                  console.log('auth service: '+data['access_token']);
                  $sessionStorage.access_token = data['access_token'];
              });
    }    
    function getToken(){
        return $sessionStorage.access_token;
    }
    return {
        authenticate:authenticate,
        getToken:getToken
    };
});

Мой phone-list.module.js выглядит так:

angular.module('phonecatApp', [
  'phoneList',
  'authentication',
]);

angular.module('phoneList', ['authentication']);

Когда я запускаю это, я получаю сообщение об ошибке:

Uncaught ReferenceError: служба аутентификации не определена

Когда я помещаю «authenticationService» в «», я получаю сообщение об ошибке:

Ошибка [$injector:unpr] служба аутентификации


person Atma    schedule 11.09.2016    source источник
comment
@A1rPun Я пробовал и получаю ту же ошибку.   -  person Atma    schedule 12.09.2016
comment
Вы определяете angular.module('phonecatApp') дважды, что означает, что вы хотите создать модуль дважды, что невозможно. В вашей ошибке тоже ошибка authtenticationService (может опечатка?).   -  person A1rPun    schedule 12.09.2016


Ответы (1)


Кажется, служба неправильно внедрена в PhoneListController.

Измените его на:

controller: ['$http', 'authenticationService',
  function PhoneListController($http, authenticationService) {
...

Строки в массиве предназначены только для обеспечения безопасности минимизации введенных ссылок на зависимости. Службу по-прежнему необходимо добавить в качестве аргумента функции.

Также не забудьте вызвать angular.module один раз для каждого компонента:

app.module.js

angular.module('phonecatApp', [
  'ngRoute',
  'phoneList',
  'authentication',
]);

список телефонов.module.js

angular.module('phoneList', ['authentication']);
person Oberon    schedule 11.09.2016
comment
Спасибо за вашу помощь @Oberon. Я все еще получаю сообщение об ошибке: Error [$injector:unpr] authtenticationService. Нужно ли мне добавлять authtenticationService в зависимость моего модуля вместо «аутентификации»? - person Atma; 12.09.2016
comment
Я бы последовал совету @A1rPun и определил модули phoneList и phonecatApp только один раз. Я отредактирую свой ответ с возможной альтернативой. - person Oberon; 12.09.2016
comment
Я сделал это, и я получаю ту же ошибку. В очередной раз благодарим за помощь. - person Atma; 12.09.2016