Angularjs 输入收音机和 ng-repeat 问题
Angularjs input radio and ng-repeat issue
好的,这是我的设置,我有以下数组:
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
中,它们应该在同一个 form
中。我的目标是,当我将一个对象设置为选中时,两个 answer
对象都应该更新,以便只有一个对象具有值 is_correct = true
但是现在发生的情况是,如果我单击第一个,然后单击第二个,两个值都有 is_correct = true
那我该怎么办?
单选按钮用于在单个字段的不同值之间进行选择,或者在 Angular 的情况下,为单个模型选择不同的值。合乎逻辑的解决方案是 select 正确答案:
<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;
});
});
好的,这是我的设置,我有以下数组:
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
中,它们应该在同一个 form
中。我的目标是,当我将一个对象设置为选中时,两个 answer
对象都应该更新,以便只有一个对象具有值 is_correct = true
但是现在发生的情况是,如果我单击第一个,然后单击第二个,两个值都有 is_correct = true
那我该怎么办?
单选按钮用于在单个字段的不同值之间进行选择,或者在 Angular 的情况下,为单个模型选择不同的值。合乎逻辑的解决方案是 select 正确答案:
<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;
});
});