javascript - Angular 列表项处于事件状态(ng-click)

标签 javascript angularjs

所以我正在尝试根据变量从列表项中添加/删除类:(请注意,如果有更好的做法,请告诉我:P)

所以我的代码是这样的:

<li ng-repeat="fold in folds" class="{{selectedFolder == fold.filter ?  'active' : ''}}">
    <a ng-click="selectedFolder = fold.filter">
        {{fold.name}}
    </a>
</li>

现在,当我点击第一个时,class 被添加,但是一旦我点击下一个,旧的 class 就不会被 '' 而不是现在两个 liclass active

谁能告诉我为什么?

最佳答案

您可以使用 ng-class

<li ng-repeat="fold in folds" ng-class="{'active' :  selectedFolder == fold.filter}">
    .....
</li>

这将添加 css 类 activeli selectedFolder == fold.filter 时的元素设置为 true , 如果 selectedFolder == fold.filter设置为 false然后active类已从 li 中删除元素。

如果你需要切换CSS类add & remove单击时,我认为您可以删除 .. ng-click="selectedFolder = fold.filter"...部分并将其替换为 ng-click="selectedFolder = !selectedFolder"并更改 ng-classng-class="{'active' : selectedFolder == 1}并添加 ng-init="selectedFolder = 0"li , 这将向 ng-repeat 添加一个变量范围,以便每个重复都有自己的 selectedFolder范围内的变量 (ng-repeat creates a child scope) .

当点击<a>我们可以切换 selectedFolder 的值这样就会切换 css class ..<a ng-click="selectedFolder = !selectedFolder">..

这里是 DEMO

更新

拥有一个active元素。

创建一个变量来引用事件元素。 (我使用对象是因为它很容易从 ng-repeat 中引用,因为 ng-repeat 创建了一个子作用域,所以我们不能直接调用如果这个变量只是一个原始变量,如果它的原始变量我们必须使用 $parent.variable_name ),所以它易于使用对象来表示它。

 $scope.active = {
    elm : -1
 }

当点击 <a> 时分配 $indexactive.elm

<a ng-click="active.elm = $index">
..

$indexng-repeat索引就像

第一次重复$index is equals to 0 第二次重复 $index is equals to 1 .. 像聪明人一样。

更改ng-class到,这将添加类 active什么时候active.elm == $index设置为 true .

..ng-class="{'active' :  active.elm == $index}">
...

这里是 DEMO

关于javascript - Angular 列表项处于事件状态(ng-click),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33259030/

相关文章:

javascript - basil.js 中 b.startsWith() 的语法

javascript - JQuery 图像 slider 工作异常

javascript - 处理 AngularJS 服务中的数据绑定(bind)

java - Angular代码不会通过将id传递给JAVA(使用Spring)来删除json

javascript - 如何将评估值传递给自定义元素指令?

javascript - 带有 knockout beforeAdd 和 afterRemove 的 jQuery 动画

javascript - 如何在谷歌地图标签的文本中使用<br/> :

javascript - 如何获取 "attribute event"中的onclick "property event"返回值?

javascript - 路由在 Angular.js 中不起作用

javascript - 在 Controller 中使用函数作为参数