角度无线电按钮形式验证

时间:2018-02-03 14:12:07

标签: angularjs json validation radio-button

我正在从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

没有循环的相同标记按预期工作,所以我不明白用于生成列表的循环是什么,它会破坏表单的验证,直到选择所有选项?

1 个答案:

答案 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" />