[英]2D arrays working in Angular JS 1.2.x and not in 1.3.x
我想在Angular中為2D數組編寫一個簡單的循環,如下所示:
<!DOCTYPE html>
<html ng-app="">
<head>
<meta charset="ISO-8859-1">
<title>Angular 2D Demo</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.14/angular.min.js"></script>
<script type="text/javascript">
var TableCtrl = function($scope) {
$scope.data = [
["val-11", "val-12", "val-13"],
["val-21", "val-22", "val-23"]
];
}
</script>
</head>
<body>
<table ng-controller="TableCtrl">
<tr ng-repeat="row in data">
<td ng-repeat="col in row">{{col}}</td>
</tr>
</table>
</body>
</html>
此代碼可以正常工作。
但是,如果使用的angular的版本更改為1.3.x,則在瀏覽器調試控制台上會出現以下錯誤:
Error: [ng:areq] http://errors.angularjs.org/1.3.14/ng/areq?p0=TableCtrl&p1=not%20a%20function%2C%20got%20undefined
at Error (native)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:6:417
at Sb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:19:510)
at tb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:20:78)
at $get (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:75:331)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:57:65
at s (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:7:408)
at A (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:56:443)
at g (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:51:299)
at g (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:51:316)
我是否需要更改數據聲明的語法,還是需要更改其他內容?
不是2D陣列不起作用-這是全局控制器功能。 在1.3中不允許(默認情況下)。 您需要顯式注冊一個.controller
:
var app = angular.module("myApp", []);
app.controller("TableCtrl", function TableCtrl($scope){
// whatever you currently have
});
您還需要明確聲明應用名稱:
<html ng-app="myApp">
...
</html>
(此外,如果您使用非最小化的Angular,它將為您提供更多描述性的錯誤消息。)
如@NewDev建議,在模塊上定義控制器。
要么
在配置階段在$controllerProvider
上執行allowGlobals
。
angular.module('myModule').config(['$controllerProvider', function($controllerProvider) {
// this option might be handy for migrating old apps, but please don't use it
// in new ones!
$controllerProvider.allowGlobals();
}]);
錯誤與未定義的控制器有關。 由於使用的是angular 1.3,因此需要使用.controller()來聲明控制器。
var TableCtrl = function($scope) {
$scope.data = [
["val-11", "val-12", "val-13"],
["val-21", "val-22", "val-23"]
];
}
至
angular.module("app",[])
.controller("TableCtrl",function($scope) {
$scope.data = [
["val-11", "val-12", "val-13"],
["val-21", "val-22", "val-23"]
];
})
在html中:
<html ng-app="app">..........</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.