Angularjs输入无线电和ng-repeat问题

时间:2015-03-19 17:02:40

标签: javascript angularjs angular-ngmodel

好的,所以这是我的设置我有以下数组:

answers = [answer1, answer2]

使用这些我执行以下操作:

    <form>
<div class="col-xs-12" ng-repeat="answer in component.question.answers">
    <div class="col-xs-1" style="width: 1%">
        <div class="radio">
            <label class="i-checks">
                <input type="radio" name="a" ng-model="answer.is_correct">
                <i></i>
            </label>
        </div>
    </div>
    <div class="col-xs-11">
        <input type="text"  ng-model="answer.answer" class="form-control" placeholder="Svar">
    </div>
</div>
</form>

现在input[radio]位于同一form内。我的目标是,当我将其中一个设置为选中时,应更新两个answer对象,以便只有一个对象具有值is_correct = true

然而现在发生的事情是,如果我点击第一个,然后第二个值都有is_correct = true

那我该怎么办?

1 个答案:

答案 0 :(得分:1)

单选按钮用于在单个字段的不同值之间进行选择,或者在Angular的情况下,单个模型。逻辑解决方案是选择正确的答案:

<input type="radio" ng-model="component.question.correctAnswer" ng-value="answer">

如果你真的需要设置一个标志,你可以通过观察者轻松实现这一目标:

$scope.$watch('component.question.correctAnswer', function(correctAnswer) {
  component.question.answers.forEach(function(answer) {
    answer.is_correct = answer === correctAnswer ? true : false;
  });
});