我想重复json数据。我的数据如下:
JSON:
{
"birds":{
"birdInfo":[
{
"name":"parrot",
"color":"green"
},
{
"name":"peacock",
"color":"green"
}
]
},
"animals":{
"animalInfo":[
{
"name":"lion",
"designation":"king"
},
{
"name":"lioness",
"designation":"queen"
}
]
}
}
在我的控制器中:
$scope.birdInfo = response.birds.birdInfo;
$scope.animalInfo = response.animals.animalInfo;
在我的观点中:
<div ng-repeat="bird in birdInfo">
{{bird.name}}
</div>
<div ng-repeat="animal in animalInfo">
{{animal.name}}
</div>
我想要的是什么:
我希望数据显示如下:
场景1:一个替代重复项目
parrot
LION
peacock
LIONESS
场景1:两个备选重复项
parrot
peacock
LION
LIONESS
crow
dove
TIGER
ELEPHANT
如何以角度进行操作?
答案 0 :(得分:1)
您可以创建一个函数,将您的2个数组合并到您需要的顺序的第3个数组中,然后在html中迭代它。
它看起来像这样,如果一个数组更长,你可以在最后附加项目:
function merge(first, second) {
var merged = [];
var shortest = Math.min(first.length, second.length);
for (var i = 0; i < shortest; i++) {
merged.push(first[i]);
merged.push(second[i]);
}
if (first.length != second.length) {
var left = first.length > second.length ? first.slice(second.length) : second.slice(first.length);
console.log(left);
merged = merged.concat(left);
}
return merged;
}
&#13;
检查this plunker是否有效。
答案 1 :(得分:1)
你可以在ng-repeat中连接两个数组,如下所示
ng-repeat="birdOrAnimal in concatenatedData = (birdInfo.concat(animalInfo))"
我刚刚更新了你的plunker。
答案 2 :(得分:1)
这是另一种方法:
http://plnkr.co/edit/bV0Bd6LINmzcjQodC9Cj?p=preview
在这种方法中,我创建了一个只使用$ index值来计算对象的转发器:
<div ng-repeat="i in getNumber(number) track by $index">
<p>{{birdInfo[$index].name}} - {{birdInfo[$index].color}}</p>
<p>{{animalInfo[$index].name}} - {{animalInfo[$index].designation}}</p>
</div>
长度按鸟的长度计算。
$scope.number = $scope.birdInfo.length;
$scope.getNumber = function() {
return new Array($scope.number);
}
答案 3 :(得分:1)
试试这个:
`<div ng-repeat="bird in birdInfo" ng-if="birdInfo.length>=animalInfo.length">
<div>{{bird.name}} - {{bird.color}}</div>
<div>{{animalInfo[$index].name}} - {{animalInfo[$index].designation}}</div>
</div>
<div ng-repeat="ani in animalInfo" ng-if="birdInfo.length<animalInfo.length">
<div>{{birdInfo[$index].name}} - {{birdInfo[$index].color}}</div>
<div>{{ani.name}} - {{ani.designation}}</div>
</div>`
答案 4 :(得分:0)
算法比AngularJS更多。
您可以Array concat()您的数组birdInfo和animalInfo循环遍历所有具有&#34;名称&#34;属性。然后显示&#34;一个替代&#34;或&#34;两个替代&#34; (原文如此)只是玩数组索引。