В Angular, как ввести сервис в контроллер?

0

Я делаю app.js следующим:

var app = angular.module('game', ['ngRoute']);

Я делаю doorService.js следующим образом:

angular.module('game', [])
  .service('doorService', function() {
    this.drawDoors = function drawDoors() { 
      ....
    }
  })

И, наконец, мой контроллер выглядит так:

angular.module('game', [])
  .controller('canvasCtrl', function($scope, doorService) {
    ....
  })

ошибки

Ошибка: $ injector: modulerr Ошибка модуля

Ошибка: $ injector: unpr Неизвестный поставщик

Теги:

3 ответа

1
Лучший ответ

Я считаю, что ваш код должен выглядеть так:

var app = angular.module('game', ['ngRoute']);

angular.module('game')
   .service('doorService', function() {
     this.drawDoors = function drawDoors() { 
     ....
   }
})


angular.module('game')
  .controller('canvasCtrl', function($scope, doorService) {
....
 })

Кроме того, поскольку вы создаете приложение глобальной переменной, все последующие вызовы angular.module('game') можно заменить на приложение.

  • 0
    даже если контроллер, сервис и основной модуль находятся в разных файлах?
  • 0
    Да, если файл js, который создает переменную приложения, загружается до того, как все остальные, ссылающиеся на него, будут работать нормально. На самом деле это зависимость для модулей в любом случае.
Показать ещё 5 комментариев
1

Вы должны сначала вложить зависимости в.module():

 angular.module('game')
    .controller('canvasCtrl', ['scope','doorService',function($scope, doorService) {
   ....
   })]
  • 0
    синтаксис неправильный ... область и сервис не вставляются в модуль
1

Проблема в том, что вы повторно обновляете один и тот же модуль.

Геттер для модуля не имеет аргумента зависимости

// declare once
angular.module('game', [/* dependencies*/])

// use as getter for components
angular.module('game').controller(...

Кроме того, необязательно добавьте массив зависимостей инъекций для контроллера, если вы планируете минимизировать код

Ещё вопросы

Сообщество Overcoder
Наверх
Меню