如何在子ng-repeat内获取父范围数组/ ng-repeat的索引

时间:2015-01-16 21:05:20

标签: javascript html angularjs angularjs-scope angularjs-ng-repeat

我正在建造一张桌子,我的桌子上有两张ng-repeat

我的问题是ng-repeat的孩子是否有可能获得父ng-repeat索引。例如:

<tbody>
    <tr ng-repeat="company in companies">
        <td ng-repeat="product in company">
            company # = {{the company index}} and product {{$index}}
        </td>
    </tr>
</tbody>

我不确定如何在td ng-repeat下添加公司索引。有没有办法做到这一点?非常感谢!

3 个答案:

答案 0 :(得分:4)

这正是ng-init所在的位置,用于替换ng-repeat的特殊属性,例如:ng-init="companyIdx=$index"。因此,公司ng-repeat创建的每个子范围都将具有此companyIdx属性。

<tbody>
    <tr ng-repeat="company in companies" ng-init="companyIdx=$index">
        <td ng-repeat="product in company">
            company # = {{companyIdx}} and product {{$index}}
        </td>
    </tr>
</tbody>

使用$parent很好,但你有任何其他指令在它们之间创建一个子范围,例如: - ng-if,另一个ng-repeat等等。你必须疯了做$parent.$parent....。使用ng-init进行别名使其更加干净,更具可读性和可维护性。

答案 1 :(得分:2)

当然,请使用$parent

company # = {{$parent.$index}} and product {{$index}}

答案 2 :(得分:1)

使用$parent可以获得父范围的原始数组。从那里,数组indexOf()函数将获得元素相对于其数组的索引。在您的代码中,它看起来像这样

<tr ng-repeat="company in companies">
    <td ng-repeat="product in company">
        company # = {{$parent.companies.indexOf(company)}} and product {{$index}}
    </td>
</tr>