未捕获的ReferenceError:未定义angular(匿名函数)

时间:2016-04-13 13:44:10

标签: javascript angularjs

我正在尝试使用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);
  };
}]);

4 个答案:

答案 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>