angularjs 2D数组ng-repeat工作不正常

Co_*_*_42 1 javascript arrays angularjs

我在一个控制器中定义了一个2D数组但是当我尝试在它上面循环时,有2个重叠的循环,它不能像预期的那样工作.第一个循环工作正常,但第二个循环不起作用.

JS/index.js

var gameOfLifeApp = angular.module('gameOfLifeApp', []);

gameOfLifeApp.controller('fieldCtrl', function ($scope) {
    $scope.field = [
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]
    ];
});
Run Code Online (Sandbox Code Playgroud)

的index.html

<!DOCTYPE HTML>
<html ng-app="gameOfLifeApp">
<head>

    <meta charset="UTF-8">
    <title>Game of Life</title>
    <link rel="stylesheet" href="css/style.css">
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.13/angular.min.js"></script>
    <script src="js/index.js"></script>

</head>
<body ng-controller="fieldCtrl">

<div id="field">
    <div class="column" ng-repeat="column in field">
        <div class="cell" ng-repeat="cell in column"></div>
    </div>
</div>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

输出:

<body ng-controller="fieldCtrl" class="ng-scope">
<div id="field">
    <!-- ngRepeat: column in field -->
    <div class="column ng-scope" ng-repeat="column in field">
        <!-- ngRepeat: cell in column -->
    </div>
    <!-- end ngRepeat: column in field -->
    <div class="column ng-scope" ng-repeat="column in field">
        <!-- ngRepeat: cell in column -->
    </div>
    <!-- end ngRepeat: column in field -->
    <div class="column ng-scope" ng-repeat="column in field">
        <!-- ngRepeat: cell in column -->
    </div>
    <!-- end ngRepeat: column in field -->
</div>
</body>
Run Code Online (Sandbox Code Playgroud)

我做错了什么 ?

Har*_*rry 8

你不能用这个.如果每个单元格与非对象相同,则Angular无法跟踪每个单元格.要过度使用此track by关键字并使用$index跟踪.

<div id="field">
    <div class="column" ng-repeat="column in field">
        <div class="cell" ng-repeat="cell in column track by $index"></div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案..感谢您的解决方案 (2认同)