В Angular.js я получаю неизвестного поставщика услуг при попытке добавить модуль анимации. Это потому, что я определяю модули без "var ="?

Угловое руководство переключается между определяющими модулями, как это:

angular.module('appname', ['phonecatFilters','phonecatAnimations']).
  config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
   ...
      };*/

а вот так:

var phonecatApp = angular.module('phonecatApp', [
  'ngRoute',

  'phonecatAnimations',
  'phonecatControllers',
  'phonecatFilters',
  'phonecatServices'
]);

phonecatApp.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
      etc...
      });
  }]);

Я не могу загрузить модуль анимации в моем уже работающем приложении, которое определяет их первым способом. Я получаю сообщение об ошибке "отсутствует поставщик". Это потому, что я смешиваю методы определения модулей? Это не ясно из их документации, и они также переключают все приложение между одним методом и следующим во время урока, что разочаровывает. Спасибо всем!

3 ответа

Решение

Ответ оказался, что моя версия Angular была 1.0. Я использовал угловой из учебника. Я скачал рабочее руководство из репозитория Git здесь: https://github.com/angular/angular-phonecat

и сравнил все мои файлы с этим рядом. Как только я обновил свою версию до Angular 1.2, которая использовалась в этой демонстрации, она заработала. Были некоторые другие изменения, которые мне нужно было сделать для новой версии (например, поместить имена контроллеров в кавычки), но теперь все работает. Надеюсь, это поможет кому-то еще.

Любой из этих подходов действителен, и он вряд ли станет источником вашей проблемы. Первая возможность, которая приходит на ум - убедитесь, что вы также включили анимацию. Таким образом, что-то вроде следующего (или ссылки из CDN) должно быть в вашем заголовке index.html.

  <script src="angular-animate.js">

Или, если это не так, включая ваш код здесь и, в идеале, версию, которая демонстрирует проблему на http://plnkr.co/ так что мы все можем попробовать, это большая помощь.

Два разных стиля проистекают из JavaScript, который поддерживает каждый. Есть второй подход, который вы демонстрируете: присваивать свой модуль переменной, а затем расширять ее.

И он поддерживает так называемые цепочечные вызовы, как в вашей первой версии (firstFunction(). SecondFunction(). LastFunction(). Это особенно популярно у функциональных программистов, так как хорошо подходит для этого мышления / подхода.

Вы определяете свой модуль приложения дважды?

angular.module('appname', ['phonecatFilters','phonecatAnimations'], ...

Инъекция должна произойти только один раз. Другие вызовы не должны использовать [], так как это создаст новый модуль, заменив ваш предыдущий.

Другие вопросы по тегам