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

Это сводило меня с ума в течение примерно получаса!

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