angularjs

时间:2016-02-05 14:55:10

标签: javascript angularjs

.. ng-repeat
<li ng-class="{'active':selIndex==$index}">
<span ng-click="selIndex=$index">click</span>
</li>

上面代码的问题是,在将活动类添加到单击的类之前,它不会重置所有li的类。如何在angluarjs中应用removeClass逻辑?

2 个答案:

答案 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