如何使用$ index迭代ng-repeat JSON obj?

时间:2017-04-28 04:32:05

标签: angularjs angularjs-ng-repeat indexof

如何在我的代码中使用$ index来迭代套件号?

我尝试了以下内容:

<tr ng-repeat="spec in results track by $index">
                <td> {{$index + 1}} </td>
                <td>{{ spec[('suite'+$index)].id }}</td>
               <!--  <td>{{ spec[('suite'+$index+1)].id }}</td> -->
</tr>

.......

[

    {
        "suite1": {

        },
        "timestamp": "2017-04-27T12:30:53.051Z"
    }, {
        "suite2": {

        },
        "timestamp": "2017-04-27T12:42:24.227Z"
    }, {
        "suite3": {

        }
        "timestamp": "2017-04-27T12:49:42.070Z"
    }, {
        "suite3": {

        },
        "timestamp": "2017-04-28T04:18:51.585Z"
    }
]

出于某种原因,它仅适用于第一次迭代。它只迭代套件1,就是这样。 如果我明确要求{{spec ['suite3']。id}}它会迭代,并显示所有“suite3”项。

我必须在这里做错事,我无法弄清楚它是什么。

3 个答案:

答案 0 :(得分:0)

这是因为你的数组中只有一个对象,即$scope.results,即它的长度为1,所以它循环只会迭代一次。因此$index值始终为0.

使用(key, value) in ng-repeat这样就可以了。

答案 1 :(得分:0)

你需要像这样使用,

  <td>{{ spec[('suite'+($index+1))].id }}</td> 

<强>样本

angular.module('app', [])
.controller('Controller', function ($scope) {
$scope.results=  [

    {
        "suite1": {
             "id":1
        },
        "timestamp": "2017-04-27T12:30:53.051Z"
    }, {
        "suite2": {
            "id":2
        },
        "timestamp": "2017-04-27T12:42:24.227Z"
    }, {
        "suite3": {

        },
        "timestamp": "2017-04-27T12:49:42.070Z"
    }, {
        "suite3": {

        },
        "timestamp": "2017-04-28T04:18:51.585Z"
    }
];
});
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title></title>
</head>
<body ng-app="app"> 
	<div ng-controller="Controller">
		<table border='1'>
			<tr ng-repeat="spec in results track by $index">
        
				<td>  {{$index + 1}} </td>
			
			  <td>{{ spec[('suite'+($index+1))].id }}</td> 
			</tr>
		</table>
	</div>
	<script type=" text/javascript " src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.js "> 
</script>
</body>

</html>

答案 2 :(得分:0)

请尝试以下代码:

<tr ng-repeat="spec in results track by $index">
                <td> {{$index + 1}} </td>

                <td>{{ spec['suite'+($index+1)].id }}</td> 
</tr>