ng-repeat 嵌套访问父作用域里的属性

时间:2022-06-24 19:58:49

在一个项目中,需要嵌套循环输出一个二维表的里的数据

数据结构

[
    {
        id:1,
        list:[
            {
                id:1,
                name:'li'
            }
        ]
    },
    {
        id:2,
        list:[
            {
                id:1,
                name:'ming'
            }
        ]
    }
]

模板页

<div ng-repeat="c in obj">
    <div ng-repeat="a in c.list">
        <span ng-if="$first">
            {{$parent.$index}}
        </span>
    </div>
</div>

因为需要访问到父作用域里的索引值,可以通过$parent来获取对父作用域的引用

但是每次取到的值都是一样的,纠结了一会才想起来我添加了一个ng-if动态插入DOM节点。ng-if会动态的插入和删除DOM,那么就会创建一个新的作用域,$parent.$index实际山访问到的就是第二层ng-repeat的$index变量;

 

ng-if 和ng-repeat都是动态的添加或删除DOM(基于这点,就不需要记住所有的能创建作用域的指令;还有directive, ng-controller),所以会创建新的作用域,和指令一样;

所以像我前面的代码,要想访问到第一级ng-repeat里的$index,就需要在往*问一级

{{$parent.$parent.$index}}

虽然可以访问的到,但是如果层级改变,我们就需要重新调整,增加或删除$parent,看起来好像很不友好。