我正在从JSON对象生成一组单选按钮选项,当选择另一个单选按钮时,该对象会被请求。这可以按预期工作,但表单验证无法正常工作,因为只有首次单击单选按钮组中的所有选项时,表单才会生效。
我对单选按钮的标记:
<div data-ng-repeat="option in options" class="radio">
<label>
<input type="radio" name="decline_type_id" ng-model="decline_type_id" value="{{option.id}}" ng-required="!decline_type_id" />
<strong>{{option.name}}</strong>
</label>
</div>
这是我的傻瓜:
https://plnkr.co/edit/B7KgUt4GMrnSATYIQuN5?p=preview
没有循环的相同标记按预期工作,所以我不明白用于生成列表的循环是什么,它会破坏表单的验证,直到选择所有选项?
答案 0 :(得分:1)
这是一个角度范围问题。 ng-repeat内的ng模型使用子范围。
ng-model="decline_type_id"
对于循环的每次迭代都是唯一的。所以对每个独特的模型进行ng-required检查。
您可以使用$ parent scope来代替对共享变量进行ng-required检查。
<input type="radio" ng-model="$parent.decline_type_id" value="{{option.id}}" ng-required="!$parent.decline_type_id" />