16

我尝试添加自定义过滤器,但如果我使用以下代码:

angular.module('myApp',[]).filter('startFrom', function() {
    return function(input, start) {
        start = +start; //parse to int
        return input.slice(start);
    }
});

但如果我这样做,我会在 firebug 中得到:“ReferenceError: angular is not defined”。

应用程序的其余部分工作正常,我在标签 div 中使用 ng-app,而不是在标签 html 中,以及https://ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.js

4

9 回答 9

47

在包含任何其他 js 文件之前,您应该首先放置包含角度线

于 2013-04-12T15:20:16.230 回答
10

由于本地与远程引用,我遇到了类似的问题

<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 并且在 ui-grid 之前声明了 angular.js,问题就解决了

<script src="lib/js/angularjs/1.4.3/angular.js"></script>
<script src="lib/js/ui-grid/3.0.7/ui-grid.js"></script>
于 2015-11-02T17:48:33.927 回答
5

好吧,这是一个单页应用程序,使用的解决方案是:

像任何其他控制器一样,使用 AJAX 加载内容,然后调用:

angular.bootstrap($('#your_div_loaded_in_ajax'),["myApp","other_module"]);
于 2013-04-23T13:08:33.567 回答
5

始终确保在 HTML 文件中首先引用 js 文件 (angular.min.js)。例如:

----------------- 这个引用会抛出错误 -------------------------

< script src="otherXYZ.js"></script>
< script src="angular.min.js"></script>

----------------- 此参考将按预期工作-----------------

< script src="angular.min.js"></script>
< script src="otherXYZ.js"></script>
于 2016-11-02T11:48:47.397 回答
2

正如评论中已经提到的@bmleite,您可能忘记加载 angular.js。

如果我在其中创建一个带有角度指令的小提琴,但不包含 angular.js,我会在 Chrome 控制台中得到完全相同的错误:Uncaught ReferenceError: angular is not defined

于 2013-01-10T16:25:40.417 回答
2

如果您碰巧正在使用 rails 和 angular-rails gem,那么通过将缺少的行添加到 application.js (或适用于您的情况的任何内容)可以轻松纠正问题:

//= require angular-resource
于 2013-05-25T02:22:53.767 回答
1

我遇到了这个问题,因为我在 Mac 上将 ngBoilerplate 复制并粘贴到我的项目中,而 Finder 没有显示隐藏文件。所以 .bower 没有与 ngBoilerplate 的其余部分一起复制。因此 bower 将资源移动到 bower_components (默认)而不是 vendor (如配置),并且我的应用程序没有角度。可能是一个极端案例,但它可能会帮助这里的人。

于 2013-09-05T19:20:11.903 回答
0

我认为如果您在使用 angularjs 时对(包含过滤器的文件)使用“async defer”,就会发生这种情况:

<script src="js/filter.js" type="text/javascript" async defer></script>

如果你这样做,只需删除“异步延迟”。

于 2013-10-23T20:53:10.373 回答
0

如果您从 Google 下载了 angular.js 文件,则需要确保每个人都具有读取权限,否则您的 HTML 文件将不会加载该文件。默认情况下,它似乎是在没有访问权限的情况下下载的,因此您还会收到如下消息:

获取http://localhost/myApp/js/angular.js

这让我抓狂了半个小时!

于 2016-02-20T12:31:32.430 回答