我有一组< li>元素。
<ul> <li ng-class="{current: selected == 100}"> <a href ng:click="selected=100">ABC</a> </li> <li ng-class="{current: selected == 101}"> <a href ng:click="selected=101">DEF</a> </li> <li ng-class="{current: selected == $index }" ng-repeat="x in [4,5,6,7]"> <a href ng:click="selected=$index">A{{$index}}</a> </li> </ul>
当用户点击上面的一个地址元素,然后它应该,设置所选的值,并显示< DIV>元素如下:
<div ng:show="selected == 100">100</div> <div ng:show="selected == 101">101</div> <div ng-repeat="x in [4,7]" ng:show="selected == $index">{{ $index }}</div>
这适用于前两种情况。
>当用户点击ABC时,第一个< DIV>显示100并将颜色更改为红色。
>当点击DEF时,101显示,DEF变为红色。
但是它对A0,A1,A2和A3根本不起作用
>当用户点击A0,A1,A2或A3时,不显示正确的值,未设置所选值,所有ng重复A0,A1,A2和A3的颜色变为红色。
这是最好的显示,如果你看看这个Plunker:
http://plnkr.co/edit/7HMeObplaBkx5R0SntjY?p=preview
注意,在顶部,我已添加{{selected}}作为调试助手在顶部。此外,[4,7]中的x仅仅是为了模拟循环。在现实生活中,我有这样的ng-repeat =“答案在modal.data.answers”。
任何人都知道如何设置,以便在正确的时间设置Li类电流,并且DIV在适当的时间为A0,A1,A2和A3< li>和< DIV>
这里的问题是,ng-repeat创建自己的范围,所以当你选择= $ index时,它会在该范围中创建一个新的选定属性,而不是改变现有的。要解决这个问题,您有两个选择:
原文链接:https://www.f2er.com/angularjs/147248.html将所选属性更改为非原始(即对象或数组,这使javascript查找原型链),然后设置一个值:
$scope.selected = {value: 0}; <a ng-click="selected.value = $index">A{{$index}}</a>
要么
使用$ parent变量访问正确的属性。虽然不太推荐,因为它增加了范围之间的耦合
<a ng-click="$parent.selected = $index">A{{$index}}</a>