在 $scope 的位置上使用 ng-repeat

Using ng-repeat on a position of $scope

我有一个像这样的数组:

$scope.items = [];
$scope.items[0] = {val1: 1, val2: 2}

我正在尝试使用 ng-repeat,例如:

<div ng-repeat = "item in items[0]"> {{item.val1}} </div>

哪个才是正确的使用方法?谢谢 :D !

items[0] 不是数组而是对象,因此您需要使用 (key, value) in expression 表示法(参见 docs)来遍历对象属性:

<div ng-repeat="(key, value) in items[0]">{{key}} {{value}}</div>

取决于您要达到的目标。看,这里有两件事要迭代(根据您的需要迭代任何一个都有意义):

  • 数组的元素
  • 对象的属性(对象是任意数组元素).

要迭代数组的 个元素,请使用:

<div ng-repeat = "item in items"> {{item.val1}} </div>

在这种情况下,item 将是数组的当前元素,上面的语句将打印数组中每个元素的 val1 属性。

要迭代对象的属性,请使用:

<div ng-repeat = "item in items[0]"> {{item}} </div>

这将打印数组第一个元素的每个 属性。 items[0] 是一个对象,您在这里遍历它的属性(因此 ng-repeat 中的 item 将引用属性)。因此,编写 item.val1 没有意义,因为 item 将是 1(在您的示例中),而不是对象,而是原始类型。

当然,你也可以迭代每个数组元素的每个属性,通过组合两个:

<div ng-repeat = "item in items">
    <div ng-repeat = "prop in item">{{prop}} </div>
</div>

这将打印数组中每个项目的每个 属性。

根据您的用例决定使用哪一个。