在$ scope的位置使用ng-repeat

时间:2015-09-30 18:06:34

标签: javascript jquery angularjs web ng-repeat

我有一个像:

这样的数组
$scope.items = [];
$scope.items[0] = {val1: 1, val2: 2}

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

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

这是使用它的正确方法吗?谢谢:D!

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

取决于你想要达到的目标。看,这里有两件事要迭代(根据你的需要,迭代也是有意义的):

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

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

<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>

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

决定使用哪一个取决于您的用例。