外循环和内循环中的ng-repeat和$ index

时间:2015-10-13 14:13:20

标签: javascript angularjs arrays

我的控制器中有一个这样的数组:

$scope.myArray = [
{
    id: 1,
    name: "my object",
    options: [
        {
          id: 1,
          key: "key1",
          value: "value1"
        },
        {
          id: 2,
          key: "key2",
          value: "value2"
        }
    ]
},
{
      id: 2,
    name: "my object 2",
    options: [
        {
          id: 1,
          key: "key3",
          value: "value3"
        },
        {
          id: 2,
          key: "key4",
          value: "value4"
        }
    ]
}
]

我想在我的模板中以角度循环。这就是我到目前为止所做的:

<div ng-repeat="obj in myArray">
    <input ng-model="myArray[$index].name" />

    <div ng-repeat="option in obj.options">

        /*How can I use $index again here to loop through the options array ? Wouldn't $index be for the parent loop */
        <input ng-model="obj.options[$index].value" />
    </div>
</div>

我的问题是,在我尝试使用obj.options[$index]的上述内部循环中,这是否会引用options数组的正确索引,还是会认为它正在使用父数组的索引?

3 个答案:

答案 0 :(得分:4)

$index将始终为您提供当前ng-repeat索引。要获取父ng-repeat索引,请使用$parent.$index

答案 1 :(得分:2)

试试这个:

<div ng-repeat="obj in myArray">
    <input ng-model="obj.name" />

    <div ng-repeat="option in obj.options">

        <input ng-model="option" />
    </div>
</div>

在Angular中使用ng-repeat&#34; obj in myArray&#34;它声明&#34; obj&#34;是在数组中迭代的当前项的别名。

答案 2 :(得分:2)

试试这个你想要从ng-repeat获取索引:

<div ng-repeat="(indexParent, obj) in myArray">
   <input ng-model="myArray[indexParent].name" />
     <div ng-repeat="(index,option) in obj.options">
    <input ng-model="myArray[indexParent].options[index].value" />
</div>