【发布时间】:2015-03-23 13:07:03
【问题描述】:
我想在 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)
我需要更改数据声明的语法还是需要更改其他内容?
【问题讨论】:
-
不是二维数组不起作用 - 它是一个全局控制器功能。这在 1.3 中是不允许的。您需要使用
.controller("TableCtrl", function TableCtrl($scope){...})显式注册控制器。此外,如果你使用非缩小的 Angular,它会给你更多的描述性错误消息。 -
@RGraham,作为答案发布
标签: javascript arrays angularjs multidimensional-array angularjs-ng-repeat