当前位置: 首页 > 知识库问答 >
问题:

如何在ng repeat中使用$索引来启用类并显示DIV?

萧献
2023-03-14

我有一套<代码>

<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  ng:show="selected == 100">100</div>
<div  ng:show="selected == 101">101</div>
<div ng-repeat="x in [4,5,6,7]" ng:show="selected == $index">{{ $index }}</div>

这适用于前两种情况。

  • 当用户单击ABC时,第一个<代码>

然而,它根本不适用于A0、A1、A2和A3

  • 当用户单击A0、A1、A2或A3时,则不会显示正确的值,不会设置所选值,并且所有ng重复A0、A1、A2和A3的颜色变为红色

如果你看这只扑克牌,这是最好的展示:

http://plnkr.co/edit/7HMeObplaBkx5R0SntjY?p=preview

请注意,我在顶部添加了{{{selected}}作为调试辅助工具。[4,5,6,7]中的x仅用于模拟循环。在现实生活中,我把它看作是模态数据回答。

有人知道我如何设置它,以便在正确的时间设置li类电流,并且在正确的时间显示A0、A1、A2和A3类电流

共有2个答案

傅旺
2023-03-14

正如johnnyynnoj提到的,ng repeat创建了一个新的作用域。实际上,我会使用一个函数来设置值。参见plunker

JS公司:

$scope.setSelected = function(selected) {
  $scope.selected = selected;
}

HTML:

{{ selected }}

<ul>
  <li ng-class="{current: selected == 100}">
     <a href ng:click="setSelected(100)">ABC</a>
  </li>
  <li ng-class="{current: selected == 101}">
     <a href ng:click="setSelected(101)">DEF</a>
  </li>
  <li ng-class="{current: selected == $index }" 
      ng-repeat="x in [4,5,6,7]">
     <a href ng:click="setSelected($index)">A{{$index}}</a>
  </li>
</ul>

<div  
  ng:show="selected == 100">
  100        
</div>
<div  
  ng:show="selected == 101">
  101        
</div>
<div ng-repeat="x in [4,5,6,7]" 
  ng:show="selected == $index">
  {{ $index }}        
</div>
左丘烨烁
2023-03-14

这里的问题是ng-重复创建了自己的范围,因此当您执行选择=$index时,它会在该范围内创建一个新的选择属性,而不是更改现有的。要解决这个问题,您有两个选项:

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

$scope.selected = {value: 0};

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

参见plunker

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

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

参见plunker

 类似资料:
  • 问题内容: 我有一组要素。 当用户单击上方的地址元素之一时,则应设置selected的值并显示以下元素之一: 这适用于前两种情况。 当用户单击ABC时,第一个显示100,然后将颜色更改为红色。 单击DEF后,将显示101,DEF变为红色。 但是,它对于A0,A1,A2和A3完全不起作用 当用户单击A0,A1,A2或A3时,不会显示正确的值,未设置所选值,并且所有ng-repeat A0,A1,A2

  • 问题内容: 我已经在Oracle SQl中创建了一个索引- 在国家(首都)上创建索引ind_cname 执行后,我收到一条成功消息。现在,我想查看创建的索引。请帮助显示索引的语法。 我是Oracle的新手。我想要一个查询,该查询显示表的索引。 谢谢 问题答案: 如果您具有 特权 ,则可以使用ALL_INDEXES或USER_INDEXES视图。该查询将是: 如果需要有关索引中包含的列的某些信息,则

  • 问题内容: 我找不到能帮助我解决Angular中这个简单问题的东西。与位置路径进行比较时,所有答案都与导航栏相关。 我使用list和构建了一个动态表。当我单击一行时,我试图为该行分配一个css类(选中),以突出显示该行已被用户选中的事实,并从先前突出显示的行中删除了该行。 我缺少在选定的行和CSS类分配之间进行绑定的方法。 我在每个()上应用了代码, 但我缺少应用更改的逻辑。 我的代码-Plunk

  • 问题内容: 我想要一个函数,当单击一个按钮时,它将使用URLLIB从Web上获取图像,并使用TKINTER在GUI中显示它。 我是URLLIB和TKINTER的新手,所以我在执行此操作时遇到了非常困难的时光。 对此进行了尝试,但是它显然不起作用,因为它使用了文本框,只会显示文本。 问题答案: 我不使用python 3,但是我可以给出在python 2.5+中有效的答案。我认为代码将在python

  • 我在HDP2.3上安装了Apache Phoenix4.4。有人知道如何查看在表上创建的所有索引吗?与MySQL一样,也有查询。我在这里找不到关于文件的帮助。

  • 问题内容: 我希望在查看我的DataFrame时,我将看到multiIndex的所有值,包括随后的行在其中一个级别具有相同的索引时。这是一个例子: 输出为: 我想在西南角也有20。也就是说,我希望我的DataFrame是: 熊猫有能力做到这一点吗? 问题答案: 您需要设置为: 如果整个笔记本电脑都需要此显示选项,则可以如下设置该选项: 说明文件: display.multi_sparse为 Tru