在嵌套的ng-repeat中,如何在嵌套的repeater中获取外部repeater项的索引

14 浏览
0 Comments

在嵌套的ng-repeat中,如何在嵌套的repeater中获取外部repeater项的索引

如果我有嵌套的ng-repeaters,像这样:\n


\n在innerobject重复器的ng-click指令中的function(inneritem.key, $index)中,我将如何从outterobject重复器中获取$index?\n

更新:

\n虽然在下面的帖子中提到了另外两种好的方法,但我最终使用了这种方法。

0
0 Comments

在嵌套的ng-repeat中,如何获取外部重复项的索引?

问题出现的原因是在嵌套的ng-repeat中,想要获取外部重复项的索引,但是默认情况下无法直接在内部重复项中获取外部重复项的索引。

解决方法是使用ng-init指令显式地设置外部索引。在外部重复项的div标签上添加ng-init指令,并将outerindex设置为$index,然后在内部重复项的div标签中使用outerindex即可获取外部重复项的索引。

具体代码如下:

另外,还有一种解决方法是使用'(indexVar, valueVar) in values'的语法。这种方法由其他人提出并得到了采纳。使用这种语法,可以直接在内部重复项中获取外部重复项的索引。

最终,通过使用上述方法,可以在嵌套的ng-repeat中获取到外部重复项的索引,实现所需的功能。

0
0 Comments

在嵌套的ng-repeat中,如何获取外部重复器项的索引的问题出现的原因是,通过ng-init指令可以将外部ng-repeat指令创建的外部作用域中的$index值获取到。通过ng-init还可以在正确的作用域中获取任何值。因此,将ng-init放在第二个ng-repeat的旁边将会获取到第二个重复器的索引,而不是外部的索引。通常的作用域继承规则适用于此,即在子作用域中定义的任何其他表达式都不会改变父作用域的表达式。可以使用对象属性,如outer.Index,来避免这种效果。这种方法也更加健壮,因为它在影响$parent作用域的代码更改下仍然有效,例如通过将内部重复器包装到影响作用域层次结构的任何指令(如ng-repeat)中。这种方法也更容易测试(而使用$parent的任何代码都不容易测试)。

需要注意的是,Angular官方文档对于ng-init指令认为这是“唯一合适的用法”:

引用:

ngInit的唯一合适用法是作为ngRepeat的特殊属性的别名,如下面的演示所示。除了这种情况外,你应该使用控制器而不是ngInit来在作用域上初始化值。

通过在外部ng-repeat中使用ng-init指令,可以获取到嵌套ng-repeat中外部重复器项的索引。这种方法更加稳健,并且在代码更改时仍然有效。同时,它也更容易测试。

0
0 Comments

在嵌套的ng-repeat中,如何获取外部重复项的索引?

问题的原因是在嵌套的ng-repeat中,如何获取外部重复项的索引。解决方法是使用$parent来访问父元素的作用域,然后在ng-click指令中使用$parent.$index来获取外部重复项的索引。

下面是解决问题的代码示例:

ng-click="function(inneritem.key, $parent.$index)"

此外,还可以参考stackoverflow上的相关问题来了解更多解决方案:

- stackoverflow.com/questions/14807258

- stackoverflow.com/questions/15256600

有人建议使用'(indexVar, valueVar) in values'来获取外部重复项的索引,这也是一个不错的解决方法。

需要注意的是,使用$parent不是一个好的实践方法,它会破坏封装性,难以进行测试,而且在代码变动时不稳定。因此,应尽量避免使用$parent来获取外部重复项的索引。

0