2016-04-13 93 views
2

我想測試一個與AngularJS評估表達式的例子,但錯誤顯示:'未捕獲ReferenceError:角度未定義'(匿名函數) 我有兩個文件:index.html,然後expression.js 的index.html:未捕獲ReferenceError:角度未定義(匿名函數)

<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); 
    }; 
}]); 
+2

的可能的複製[什麼是「角度沒有被定義的」原因(http://stackoverflow.com/questions/ 18044519 /原因是角沒有定義) – Xufox

回答

0

的問題是到文件「的index.html」

第一:包括「angularjs.min.js」的源必須被寫入之前包括「expression.js」的

Then:你應該指定ng-app ='expressionExample';對於爲例到應答器的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> 
0

你運行腳本,你有角本身之前。

這不起作用。

+0

所以我可以糾正嗎?我是angularjs的初學者 –

+0

在運行Angular腳本文件之前,您無法使用Angular。 – SLaks

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之前加載,因此無法找到接口。

這同樣適用於其他庫&框架。如果你的js文件有一個像jquery圖書館依賴性的jquery.js文件應該在你的自定義文件加載

爲了擺脫這樣的錯誤,你可以採取看看asynchronous module definition(AMD)CommonJS。可還探索像webpack

模塊加載
1

您包含的腳本按它們包含的順序加載。因此,在包含expression.js文件之前,您需要包含angular.min.js,因爲這取決於angular.min.js文件。

<script src="/home/mohamed/Desktop/AngularJS/angular.min.js"></script> 
<script src="/home/mohamed/Desktop/AngularJS/expression.js"></script> 
相關問題