所以我有一个ng-repeat嵌套在另一个ng-repeat中,以便构建一个导航菜单 . 在内部ng-repeat循环的每个 <li>
上,我设置了一个ng-click,它通过传入$ index来调用该菜单项的相关控制器,让应用程序知道我们需要哪一个 . 但是我还需要从外部ng-repeat传入$ index,以便app知道我们在哪个部分以及哪个教程 .
<ul ng-repeat="section in sections">
<li class="section_title {{section.active}}" >
{{section.name}}
</li>
<ul>
<li class="tutorial_title {{tutorial.active}}" ng-click="loadFromMenu($index)" ng-repeat="tutorial in section.tutorials">
{{tutorial.name}}
</li>
</ul>
</ul>
这是一个Plunker http://plnkr.co/edit/bJUhI9oGEQIql9tahIJN?p=preview
6 回答
每个ng-repeat使用传递的数据创建子范围,并在该范围中添加额外的
$index
变量 .因此,您需要做的是达到父作用域,并使用
$index
.见http://plnkr.co/edit/FvVhirpoOF8TYnIVygE6?p=preview
当你处理对象时,你想要方便地忽略简单的id .
如果您将点击线更改为此,我认为您将顺利完成:
另外,我认为你可能需要改变
喜欢的东西
请参阅http://docs.angularjs.org/misc/faq并查找ng-class .
只是为了帮助那些到达这里的人......你不应该使用$ parent . $ index,因为它不太安全 . 如果在循环中添加ng-if,则会导致$ index混乱!
Right way
检查:plnkr.co/52oIhLfeXXI9ZAynTuAJ
那么使用这种语法(看看plunker) . 我刚刚发现了它,它非常棒 .
例:
使用此语法,您可以将自己的名称指定给
$index
并区分这两个索引 .比
$parent.$index
更优雅的解决方案是使用ng-init:Plunker:http://plnkr.co/edit/knwGEnOsAWLhLieKVItS?p=info
我正在尝试使用gonzalon提出的解决方案 . 但它在我的情况下不起作用 . 当鼠标通过循环到行和单元格创建的表格的单元格上时,我希望有一个包含更多信息的工具提示 .
将鼠标移动到表格单元格时,值会发生变化,但行和列的值始终都是列号 .