我正在尝试使用AngularJS测试一个示例到评估表达式但是显示错误:' Uncaught ReferenceError:angular not not defined' (匿名功能) 我有两个文件:index.html和expression.js 的index.html:
<script src="/home/mohamed/Desktop/AngularJS/expression.js"></script>
<script src="/home/mohamed/Desktop/AngularJS/angular.min.js"></script>
<div ng-controller="ExampleController" class="expressions">
Expression:
<input type='text' ng-model="expr" size="80"/>
<button ng-click="addExp(expr)">Evaluate</button>
<ul>
<li ng-repeat="expr in exprs track by $index">
[ <a href="" ng-click="removeExp($index)">X</a> ]
<code>{{expr}}</code> => <span ng-bind="$parent.$eval(expr)"></span>
</li>
</ul>
</div>
expression.js:
angular.module('expressionExample', []).controller('ExampleController', ['$scope', function($scope) {
var exprs = $scope.exprs = [];
$scope.expr = '3*10|currency';
$scope.addExp = function(expr) {
exprs.push(expr);
};
$scope.removeExp = function(index) {
exprs.splice(index, 1);
};
}]);
答案 0 :(得分:3)
进行此更改
<script src="/home/mohamed/Desktop/AngularJS/angular.min.js"></script>
<script src="/home/mohamed/Desktop/AngularJS/expression.js"></script>
你的expression.js的原因是依赖于angualarjs框架。
执行angular.module
时,它会查找用于配置模块的界面。由于表达式js在angularjs之前加载,因此无法找到接口。
这同样适用于其他图书馆&amp;框架。如果您的js文件依赖于像jquery
这样的库,那么应该在自定义文件之前加载jquery.js文件
要消除此类错误,您可以查看asynchronous module definition(AMD)
或CommonJS
。还可以浏览模块加载程序,例如webpack
答案 1 :(得分:1)
您包含的脚本按其包含的顺序加载。因此,在包含angular.min.js
文件之前,您需要包含expression.js
,因为这取决于angular.min.js
文件。
<script src="/home/mohamed/Desktop/AngularJS/angular.min.js"></script>
<script src="/home/mohamed/Desktop/AngularJS/expression.js"></script>
答案 2 :(得分:0)
在包含Angular本身之前,您正在运行该脚本。
那不行。
答案 3 :(得分:0)
问题出在文件'index.html'
中首先:必须在'expression.js'的包含之前写入'angularjs.min.js'来源的包含
然后:你应该指定ng-app ='expressionExample';例如进入balise html
这是更正:
<html ng-app='expressionExample'>
<script src="/home/mohamed/Desktop/AngularJS/angular.min.js"></script>
<script src='/home/mohamed/Desktop/AngularJS/expression.js'></script>
<div ng-controller="ExampleController" class="expressions">
Expression:
<input type='text' ng-model="expr" size="80"/>
<button ng-click="addExp(expr)">Evaluate</button>
<ul>
<li ng-repeat="expr in exprs track by $index">
[ <a href="" ng-click="removeExp($index)">X</a> ]
<code>{{expr}}</code> => <span ng-bind="$parent.$eval(expr)"></span>
</li>
</ul>
</div>
</html>