以下是记录:
$scope.myArray =
[
{
"id": 100,
"child": [
{
"id": 77,
"part": 33,
"name" : 16
"subName": 16.1,
},
{
"id": 76,
"part": 30,
"name" : 14,
"subName": 14.3,
},
{
"id": 75,
"part": 29,
"name" : 12,
"subName": 12.1,
}
]
}
]
现在在上面的记录中,16.1属于part = 33而14.3属于part = 30,因此Subname都属于不同的部分,所以我想显示名称16和14.
所以上述记录的预期输出如下所示:
16
14
12
当我有以下记录时出现问题:
$scope.myArray =
[
{
"id": 100,
"child": [
{
"id": 76,
"part": 30,
"name" : 14,
"subName": 14.3,
},
{
"id": 71,
"part": 30,
"name" : 14,
"subName": 14.2,
},
{
"id": 70,
"part": 30,
"name" : 14,
"subName": 14.1,
}
]
}
]
这里的子包含相同部分的所有子名,即30,所以现在我要显示Subname.So在这种情况下的预期输出将是如下的子名:
14.3
14.2
14.1
记录将从0 - 1,1 - 2,2 - 3进行比较,但是如果子数组包含两个以上的记录,我就不知道如何比较记录。
注意:如果两个记录中的任何一个包含不同的部分,我将不会在子数组中有重复的部分。例如,我不会像16.1,14.3,14.2那样使用Subname,因为这里我有16.1属于不同的部分。但是如果没有16.1,那么我可以得到14.3,14.2,它们是相同的部分。
var app = angular.module('myApp', []);
app.controller('myCtrl', function ($scope) {
$scope.myArray =
[
{
"id": 100,
"child": [
{
"id": 77,
"part": 33,
"name" : 16,
"subName": 16.1,
},
{
"id": 76,
"part": 30,
"name" : 14,
"subName": 14.3,
},
{
"id": 75,
"part": 29,
"name" : 12,
"subName": 12.1,
}
]
}
]
});
<!DOCTYPE html>
<html ng-app="myApp" ng-controller="myCtrl">
<head>
<title></title>
<meta charset="utf-8" />
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
</head>
<body>
<div ng-repeat="item in myArray[0].child">
{{ item.name }}
</div>
</body>
</html>
答案 0 :(得分:2)
请参阅以下控制器代码。我试图实现你想要的东西。
$scope.myArray = [ {
"id" : 100,
"child" : [ {
"id" : 76,
"part" : 30,
"name" : 14,
"subName" : 14.3,
}, {
"id" : 71,
"part" : 30,
"name" : 14,
"subName" : 14.2,
}, {
"id" : 70,
"part" : 30,
"name" : 14,
"subName" : 14.1,
} ]
}, {
"id" : 101,
"child" : [ {
"id" : 77,
"part" : 33,
"name" : 16,
"subName" : 16.1,
}, {
"id" : 76,
"part" : 30,
"name" : 14,
"subName" : 14.3,
}, {
"id" : 75,
"part" : 29,
"name" : 12,
"subName" : 12.1,
} ]
} ]
HTML code:
<div ng-repeat="item in myArray">
============<br />
<div ng-repeat="item1 in item.child">
<span>{{(item1.part==item.child[$index+1].part ||
($index==item.child.length-1 &&
item1.part==item.child[$index-1].part))?item1.subName:item1.name}}</span>
</div>
</div>
我在检查,如果当前项目和下一项目的部分相同或不同,如果它是最后一项,那么当前项目和前一项目的部分是否相同,并且基于此我正在显示subName
或name
。我希望这个解决方案对你有用。
更新:
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.myArray = [{
"id": 100,
"child": [{
"id": 76,
"part": 30,
"name": 14,
"subName": 14.3,
}, {
"id": 71,
"part": 30,
"name": 14,
"subName": 14.2,
}, {
"id": 70,
"part": 30,
"name": 14,
"subName": 14.1,
}]
}, {
"id": 101,
"child": [{
"id": 77,
"part": 33,
"name": 16,
"subName": 16.1,
}, {
"id": 76,
"part": 30,
"name": 14,
"subName": 14.3,
}, {
"id": 75,
"part": 29,
"name": 12,
"subName": 12.1,
}]
}]
});
&#13;
<html ng-app="myApp" ng-controller="myCtrl">
<head>
<title></title>
<meta charset="utf-8" />
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
</head>
<body>
<div ng-repeat="item in myArray">
============<br />
<div ng-repeat="item1 in item.child">
<span>{{(item1.part==item.child[$index+1].part ||
($index==item.child.length-1 &&
item1.part==item.child[$index-1].part))?item1.subName:item1.name}}</span>
</div>
</div>
</body>
</html>
&#13;