AngularJs ReferenceError: угловой не определен
Я пытаюсь добавить пользовательский фильтр, но если я использую следующий код:
angular.module('myApp',[]).filter('startFrom', function() {
return function(input, start) {
start = +start; //parse to int
return input.slice(start);
}
});
Но если я сделаю это, я получу: "ReferenceError: angular не определено" в firebug.
Остальная часть приложения работает нормально, я использую ng-app в теге div, а не в теге html, а https://ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.js
9 ответов
В том смысле, что это одностраничное приложение, было использовано следующее решение:
загрузите содержимое с помощью AJAX, как и любой другой контроллер, и затем вызовите:
angular.bootstrap($('#your_div_loaded_in_ajax'),["myApp","other_module"]);
Перед включением любого другого файла js вы должны поставить угловую линию включения
Я столкнулся с подобной проблемой из-за локальной или удаленной ссылки
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.js"></script>
<script src="lib/js/ui-grid/3.0.7/ui-grid.js"></script>
Поскольку ui-grid.js зависит от angular.js, ui-grid требует angular.js к моменту его загрузки. Но в приведенном выше случае ui-grid.js [локально сохраненный эталонный файл] загружается до загрузки angularjs [из Интернета],
Проблема была решена, если бы у меня были и angular.js, и ui-grid, на которые есть локальные ссылки, а также я объявил angular.js перед ui-grid
<script src="lib/js/angularjs/1.4.3/angular.js"></script>
<script src="lib/js/ui-grid/3.0.7/ui-grid.js"></script>
Всегда проверяйте, чтобы файл js (angular.min.js) был указан первым в файле HTML. Например:
----------------- Эта ссылка выдает ошибку -------------------------
< script src="otherXYZ.js"></script>
< script src="angular.min.js"></script>
----------------- Эта ссылка будет работать, как ожидалось -------------------
< script src="angular.min.js"></script>
< script src="otherXYZ.js"></script>
Как уже упоминалось в комментариях @bmleite, вы, вероятно, забыли загрузить angular.js.
Если я создаю скрипку с угловыми директивами, но не включаю angular.js, я получаю точно такую же ошибку в консоли Chrome: Uncaught ReferenceError: angular is not defined
В случае, если вы используете rails и гем angular-rails, проблему легко исправить, добавив эту недостающую строку в application.js (или то, что когда-либо применимо в вашей ситуации):
//= require angular-resource
Я столкнулся с этим, потому что я сделал копирование и вставку ngBoilerplate в свой проект на Mac без Finder, показывающего скрытые файлы. Таким образом,.bower не был скопирован с остальной частью ngBoilerplate. Таким образом, bower переместил ресурсы в bower_components (defult) вместо vendor (как настроено), и мое приложение не получило откровений. Возможно, это угловой случай, но это может кому-то помочь.
Я думаю, что это произойдет, если вы будете использовать 'async defer' для (файл, который содержит фильтр) при работе с angularjs:
<script src="js/filter.js" type="text/javascript" async defer></script>
если вы это сделаете, просто удалите "async defer".
Если вы загрузили файл angular.js из Google, вам нужно убедиться, что все имеют к нему доступ для чтения, иначе он не будет загружен вашим HTML-файлом. По умолчанию он загружается без прав доступа, поэтому вы также получите сообщение, такое как:
ПОЛУЧИТЕ http://localhost/myApp/js/angular.js
Это сводило меня с ума в течение примерно получаса!