.. ng-repeat
<li ng-class="{'active':selIndex==$index}">
<span ng-click="selIndex=$index">click</span>
</li>
上面代码的问题是,在将活动类添加到单击的类之前,它不会重置所有li的类。如何在angluarjs中应用removeClass逻辑?
答案 0 :(得分:2)
您没有在Angular中主动删除课程。你告诉Angular在什么情况下哪个类必须是活动的,它会解决它。您可以像ng-class
那样使用true
。如果条件为false
,则该类将出现在该元素上,否则它将胜出。 只要状态发生任何变化,Angular就会重新计算所有元素的所有类。一旦条件变为$index
,Angular就会删除这些类。
你的逻辑更有可能无法在某个地方工作。我不会将$scope.items = [{ id: 1 }, { id: 2 }];
$scope.activeItem = null;
$scope.selectItem = function (item) {
$scope.activeItem = item;
}
用于任何事情,因为任何一个项目的索引都可能随时发生变化。而是使用数据本身:
<li ng-repeat="item in items" ng-class="{ active: item.id == activeItem.id }">
<span ng-click="selectItem(item)">
ng-click
在sudo lsof -i | grep 27017
指令中使用直接赋值在范围方面可能会变得棘手;使用控制器上的功能通常没有任何问题。
答案 1 :(得分:0)
这可能与为每次迭代创建子范围的ng-repeat有关。
您应该尝试以下方法:
<li ng-class="{'active':$parent.selIndex==$index}">
<span ng-click="$parent.selIndex=$index">click</span>
</li>
如果你有嵌套的ng-repeat,它将成为一个调试的地狱。我建议您使用控制器作为语法:https://stackoverflow.com/a/21292408/1251861