如何在angular中迭代数组数组中的对象

时间:2016-01-14 22:03:01

标签: angularjs

我将几个对象数组推入一个空数组,然后我想在html上显示。

$scope.displaypersons = [
[{name: "abc"}],
[{name: "pqr"},{name: "lmn"},{name: "rst"}],
[{name: "uvw"},{name: "xyz"}]
]

在html中

<div ng-repeat="person in displaypersons"> 
  {{person}}
  <!-- {{person.name}} doesn't work -->
</div>

但在迭代之后,我就是这样:

[{"name": "abc"}]
[{"name": "pqr"},{"name": "lmn"},{"name": "rst"}]
[{"name": "uvw"},{"name": "xyz"}]

3 个答案:

答案 0 :(得分:1)

你有一个二维数组。 Angular只会迭代第一维。您需要person[i].name才能获得该属性。

或尝试:

<div ng-repeat="persons in displaypersons"> 
    <div ng-repeat="person in persons"> 
        {{person.name}}
    </div>
</div>

答案 1 :(得分:1)

你有一个二维数组,你需要嵌套你的ngRepeats才能访问这些对象。

<div ng-repeat="personGroup in displaypersons">
  <div ng-repeat="person in personGroup">
    {{person.name}}
  </div>
</div>

答案 2 :(得分:1)

您可以创建自定义滤镜,将2D阵列转换为平面阵列。

angular.module('myApp').filter("flatten", function() {
     function flatten (arr) {
         return arr.reduce(function(a, b) {return a.concat(b)});
     };
     return flatten;
});

HTML

<div ng-repeat="person in displaypersons | flatten"> 
     {{person.name}}
</div>