所以我试图根据变量添加/删除列表项中的一个类:(注意如果有更好的做这个活动的东西请告诉我:P)
所以我的代码看起来像这样:
<li ng-repeat="fold in folds" class="{{selectedFolder == fold.filter ? 'active' : ''}}">
<a ng-click="selectedFolder = fold.filter">
{{fold.name}}
</a>
</li>
现在,当我点击第一个时,添加了class
,但是一旦我点击下一个,class
就不会被''
取代,而现在有两个li
class
active
谁能告诉我为什么?
答案 0 :(得分:1)
您可以使用ng-class
<li ng-repeat="fold in folds" ng-class="{'active' : selectedFolder == fold.filter}">
.....
</li>
当active
设置为li
时,这会将css类selectedFolder == fold.filter
添加到true
元素,IF selectedFolder == fold.filter
设置为false
然后从active
元素中删除li
类。
如果您需要在点击时切换css类add & remove
,我认为您可以删除.. ng-click="selectedFolder = fold.filter"...
部分并将其替换为ng-click="selectedFolder = !selectedFolder"
,并将ng-class
更改为{ {1}}并将ng-class="{'active' : selectedFolder == 1}
添加到ng-init="selectedFolder = 0"
,这会将变量添加到li
范围,以便每个重复在其范围内都有自己的ng-repeat
变量 selectedFolder
点击(ng-repeat creates a child scope)
后,我们可以切换<a>
的值,以便切换selectedFolder
css class
这是DEMO
<强>更新强>
拥有一个..<a ng-click="selectedFolder = !selectedFolder">..
元素。
创建一个变量来引用活动元素。 (我使用了对象,因为它很容易从active
引用,因为ng-repeat
创建了一个子范围,所以如果这个变量只是一个原始变量,我们就不能直接调用它的原语我们必须使用{{1因此,很容易使用一个对象来表示它。
ng-repeat
点击$parent.variable_name
时将 $scope.active = {
elm : -1
}
值分配给<a>
$index
active.elm
是<a ng-click="active.elm = $index">
..
索引,就像
首次重播$index
第二次重复ng-repeat
..就像明智一样。
将$index is equals to 0
更改为,当$index is equals to 1
设置为ng-class
时,这会添加课程active
。
active.elm == $index
这是DEMO
答案 1 :(得分:0)
使用ng-class
<li ng-repeat="fold in folds" ng-class="{{selectedFolder == fold.filter ? 'active' : ''}}">
<a ng-click="selectedFolder = fold.filter">
{{fold.name}}
</a>
</li>