我有一个以表格形式显示的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>
controller.js
$scope.volunteerOptions = [
{ content : 'Content 1', selected : false },
{ content : 'Content 2', selected : false },
{ content : 'Content 3', selected : false },
{ content : 'Content 4', selected : false },
];
关于我将如何实现此行为的任何想法?
最佳答案
您可以添加另一个作用域属性,并使用 array.some
检查是否任何selected
是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()">