Я пишу образец приложения с использованием angularjs. У меня в браузере Chrome возникла ошибка, указанная ниже.
Ошибка
Ошибка: [ng: areq] http://errors.angularjs.org/1.3.0-beta.17/ng/areq?p0=ContactController&p1=not%20a%20function%2C%20got%20undefined
Что отображается как
Аргумент ContactController не является функцией, он не определен
Код
<!DOCTYPE html>
<html ng-app>
<head>
<script src="../angular.min.js"></script>
<script type="text/javascript">
function ContactController($scope) {
$scope.contacts = ["abcd@gmail.com", "abcd@yahoo.co.in"];
$scope.add = function() {
$scope.contacts.push($scope.newcontact);
$scope.newcontact = "";
};
}
</script>
</head>
<body>
<h1> modules sample </h1>
<div ng-controller="ContactController">
Email:<input type="text" ng-model="newcontact">
<button ng-click="add()">Add</button>
<h2> Contacts </h2>
<ul>
<li ng-repeat="contact in contacts"> {{contact}} </li>
</ul>
</div>
</body>
</html>
У меня возникла эта проблема, потому что я заключил файл определения контроллера в закрытие:
Но я забыл на самом деле вызвать это закрытие для выполнения этого кода определения и фактического сообщения Javascript о существовании моего контроллера. Т.е. выше должно быть:
Обратите внимание на () в конце.
источник
Я новичок в Angular, и я сделал основную ошибку, не включив имя приложения в корневой элемент angular. Итак, изменив код с
в
работал у меня. @PSL уже рассказал об этом в своем ответе выше.
источник
У меня была эта ошибка, потому что я не понимал разницы между
angular.module('myApp', [])
иangular.module('myApp')
.Это создает модуль myApp и перезаписывает любой существующий модуль с именем myApp:
angular.module('myApp', [])
Это извлекает существующий модуль myApp:
angular.module('myApp')
Я перезаписывал свой модуль в другом файле, используя первый вызов выше, который создал другой модуль вместо того, чтобы получить, как я ожидал.
Подробнее здесь: https://docs.angularjs.org/guide/module
источник
Я просто перехожу на angular 1.3.3 и обнаружил, что если бы у меня было несколько контроллеров в разных файлах, когда приложение было переопределено, и я потерял первые объявленные контейнеры.
Я не знаю, хорошая ли это практика, но, может быть, она пригодится для другого.
источник
У меня возникла эта проблема, когда я случайно повторно объявил
myApp
:После переобъявления
Controller1
перестает работать и выдает ошибку OP.источник
Действительно отличный совет, за исключением того, что ТАКАЯ ошибка МОЖЕТ возникнуть просто из-за отсутствия критического сценария, включенного на вашей корневой странице.
пример:
страница: index.html
Отсутствует
Когда Маршруту сообщается, какой контроллер и представление обслужить:
Столь существенная проблема с неопределенным контроллером МОЖЕТ возникнуть из-за этой случайной ошибки, связанной с отсутствием ссылки на контроллер!
источник
Эта ошибка также может возникнуть, если у вас большой проект с большим количеством модулей. Убедитесь, что приложение (модуль), используемое в вашем файле angular, совпадает с тем, что вы используете в своем шаблоне, в этом примере это « thisApp ».
app.js
index.html
источник
Если ничего не помогает и вы используете Gulp или что-то подобное ... просто запустите его повторно!
Я потратил 30 минут на четырехкратную проверку всего, когда все, что требовалось, - это быстрый удар в штаны.
источник
Если вы используете маршруты (высокая вероятность) и ваша конфигурация имеет ссылку на контроллер в модуле, который не объявлен как зависимость, то инициализация также может завершиться ошибкой.
Например, если вы настроили ngRoute для своего приложения, например
Будьте осторожны в блоке, который объявляет маршруты,
Объявление
secondModule
как зависимость после ngRoute должно решить проблему. Я знаю, что у меня была эта проблема.источник
Я получал эту ошибку, потому что использовал старую версию angular, несовместимую с моим кодом.
источник
В моем случае эти ошибки возникли, им предшествовали синтаксические ошибки в функции list.find (); 'find' для списка, не распознаваемого IE11, поэтому его необходимо заменить методом Filter, который работает как для IE11, так и для Chrome. обратитесь https://github.com/flrs/visavail/issues/19
источник
Этой ошибке в моем случае предшествовала синтаксическая ошибка метода поиска списка в IE11. поэтому заменил метод поиска методом фильтрации, как предлагается https://github.com/flrs/visavail/issues/19
то ошибка выше контроллера не определена.
источник
Я получил ту же ошибку, следуя старому руководству с (недостаточно старым) AngularJS 1.4.3. Безусловно, самое простое решение - отредактировать исходный код angular.js из
в
и просто следуйте руководству как есть, а устаревшие глобальные функции работают просто как контроллеры.
источник
angular.module('app') .config(['$controllerProvider', function($controllerProvider) { $controllerProvider.allowGlobals(); }]);