В 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'], ...
Инъекция должна произойти только один раз. Другие вызовы не должны использовать [], так как это создаст новый модуль, заменив ваш предыдущий.