如何使用 AngularJS ng-click / ng-repeat 取消选择非选定项目


            <div class="right">
              <a class="waves-effect waves-light btn"
                ng-repeat="answer in question.answers"
                ng-click="answer.isSelected = !answer.isSelected">
                {{ answer.letter }}
              </a>
            </div>

这是我的代码。我有很多answers,我希望用户选择一个。我有这部分工作。我没有工作的部分是我想为false所有其他答案设置isSelected。我怎样才能做到这一点?

请记住,我的数据是超级嵌套的。因此,questionng-repeat="question in instructionSet.questions"的一部分,instructionSet是另一个ng-repeat的一部分,依此类推。

如果只有一个元素可以选择,最好有一个参数,因此保存状态而不是将其放在每个对象上。

<div class="right">
    <a class="waves-effect waves-light btn"
        ng-repeat="answer in question.answers"
        ng-click="$parent.question.selectedAnswer =
          $parent.question.selectedAnswer == answer ? null: answer">
        {{ answer.letter }}
    </a>
</div>

非常简单 - 在重复作用域上方声明一个变量,假设selectedIndex并将其设置为 -1

$scope.selectedIndex = -1;
现在,如果尚未单击,则将其设置为

单击时所选索引,如果已选择,则将其设置为-1

ng-click="setIndex($index)">

和方法:

$scope.setIndex = function(idx) {
    $scope.selectedIndex = $scope.selectedIndex === idx ? -1 : idx;
}

最新更新