如何使用AngularJS ng-click / ng-repeat取消选择未选择的项目?

时间:2016-01-20 14:27:01

标签: javascript angularjs

            <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,我希望用户选择一个。我有那个部分在工作。我无法正常工作的部分是我要为isSelected的所有其他答案设置false。我怎么能做到这一点?

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

2 个答案:

答案 0 :(得分:1)

如果你只能选择一个元素,最好有一个参数,所以保存状态而不是每个对象都有。

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

答案 1 :(得分:0)

非常简单 - 在重复范围之上声明一个变量,让我们说selectedIndex并将其设置为-1

$scope.selectedIndex = -1;

现在将其设置为单击时所选的索引(如果尚未选中),或者如果已选择则返回-1

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

方法:

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