AngularJS内部ng重复未处理$index$函数参数中的父级
AngularJS inner ng-repeat not processing $index.$parent in function argument
有没有比我更有经验的人能向我解释一下为什么会编译:
<li class="btn dropdown top-stack breadcrumb-btn" ng-repeat="nodeName in selectedNodeNames">
<a class="dropdown-toggle btn-anchor">{{nodeName}}</a>
<ul class="dropdown-menu">
<li ng-class="activeState($parent.$index,$index)" ng-repeat="node in selectedNodeAtLevel($index).children">
<a ng-click="tabSelect($parent.$index,$index)">{{getIndexString(node)}}</a>
</li>
</ul>
</li>
而这里面的内ng重复不是吗?
<li class="btn dropdown top-stack breadcrumb-btn" ng-repeat="nodeName in selectedNodeNames">
<a class="dropdown-toggle btn-anchor">{{nodeName}}</a>
<ul class="dropdown-menu">
<li ng-class="activeState($parent.$index,$index)" ng-repeat="node in selectedNodeAtLevel($parent.$index).children">
<a ng-click="tabSelect($parent.$index,$index)">{{getIndexString(node)}}</a>
</li>
</ul>
</li>
请注意,我使用$parent调用selectedNodeAtLevel()函数$指数,而不仅仅是美元指数。为什么它会为一个而不是另一个编译?我能做些什么来达到同样的效果?
(我所说的"编译"是指它不会生成任何HTML,只是一个注释掉的违规行副本)
谢谢你的耐心!
首先让我指出ng-repeat
创建了新的作用域。此外,我假设外部重复不会位于另一个重复中。假设如此,请注意,在第一个示例中,您将$index
传递给selectedNodeAtLevel
函数。这是因为$index
是由外部重复定义的,并在外部重复范围的上下文中解析。该$index
变量对应于每个nodeName
。
因此,第二个例子失败了,因为在外部重复的$parent
中没有定义$index
(它实际上指的是该代码所在的控制器的范围)。
至少在第二种情况下,似乎您希望$index
指的是内部重复,但事实并非如此,它指的是在已定义的范围中定义的$index
。因此,即使在使用activeState
的第一个示例中,也应该存在问题,因为其中引用了$parent.$index
。请注意,从内部重复内部引用$index
将引用该内部作用域上的$index
。
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- AngularJS:我可以跳过函数参数回调吗
- 函数未将值作为参数传递
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 为什么不'我们在javascript中使用函数参数的数据类型
- 你好,这是测试用例,我必须在函数中传递n个参数
- JavaScript - 多参数函数,它是多个图像库的字符串
- 如何从两个参数函数返回随机整数
- 以无点风格在Ramda中编写一个无参数函数
- JS:将单参数函数转换为可链接函数
- 正则表达式类似于Javascript中的参数函数
- 将 $' 值传递给替换的关联参数函数
- "这个“;在参数函数中
- 如何向jquery插件发送参数函数
- 将参数函数Node.js从一个js传递到另一个js
- 如何在javascript参数函数中传递PHP post方法字符串
- 装饰 Javascript Promise.then 以便参数函数接收附加参数
- 正在分析setInterval ID'是的's参数函数
- 如何根据一个参数函数计算年龄
- 对象参数/函数和/或三元运算符混淆