angularjs – 如何在ng-repeat中使用$ index来启用类并显示DIV?

前端之家收集整理的这篇文章主要介绍了angularjs – 如何在ng-repeat中使用$ index来启用类并显示DIV?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一组< 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时,它会在该范围中创建一个新的选定属性,而不是改变现有的。要解决这个问题,您有两个选择:

将所选属性更改为非原始(即对象或数组,这使javascript查找原型链),然后设置一个值:

$scope.selected = {value: 0};

<a ng-click="selected.value = $index">A{{$index}}</a>

See plunker

要么

使用$ parent变量访问正确的属性。虽然不太推荐,因为它增加了范围之间的耦合

<a ng-click="$parent.selected = $index">A{{$index}}</a>

See plunker

原文链接:https://www.f2er.com/angularjs/147248.html

猜你在找的Angularjs相关文章