如何为AngularJS表单验证至少要求1个复选框?

Act*_*ely 6 javascript forms validation angularjs

我有一个JSON对象数组,显示在一个表单中.我希望进行表单验证工作,用户必须至少选中一个复选框才能使整个表单有效.

我知道ng-required可以使用但是我已经实现了它,这意味着必须选择它们才能使它有效.

这是我到目前为止的代码:

index.html的:

<div ng-repeat="item in volunteerOptions">
    <label class="checkbox"><input type="checkbox" value="" data-ng-model="item.selected" ng-required="true">{{ item.content }}</label>
</div>

<button type="submit" class="btn btn-success" ng-disabled="!memberRegistrationForm.$valid">Submit</button>
Run Code Online (Sandbox Code Playgroud)

controller.js

$scope.volunteerOptions = [
        { content : 'Content 1', selected : false },
        { content : 'Content 2', selected : false },
        { content : 'Content 3', selected : false },
        { content : 'Content 4', selected : false },
];
Run Code Online (Sandbox Code Playgroud)

关于我如何能够实现这种行为的任何想法?

Jos*_*eph 18

您可以添加其他范围属性,并使用array.some以检查是否有任何的selectedARE true.然后将该范围属性提供给ng-required.就像是

$scope.isOptionsRequired = function(){
  return !$scope.volunteerOptions.some(function(options){
    return options.selected;
  });
}

<input type="checkbox" value="" data-ng-model="item.selected" ng-required="isOptionsRequired()">
Run Code Online (Sandbox Code Playgroud)