我使用 ng-form 作为父表单和子 mg-forms 以使用 ng-repeat 进行验证。
<div ng-form="form">
<div ng-repeat="field in fields">
<div ng-form="subform"><input...></div>
</div>
</div>
并像这样进行验证:
if ($scope.form.subform.$invalid && !$scope.form.subform.$error.required) {
// Do something...
}
(这是一个非常简单的例子,对于不同的输入类型和不同的名称,我有更多不同的子表单,例如 input[text] 被命名为 TextForm,input[numeric] 是 NumericForm 等)
如果只有在现场,一切都会按预期工作。但是如果 ng-repeat 生成多个字段,验证只会触发最后一个子表单,其他的会被忽略。
有没有办法循环遍历所有子表单来检查其中一个是否无效?
另外,我正在标记所有未填写的必填字段,如下所示:
if ($scope.form.$error.required) {
angular.forEach($scope.form.$error.required,
function (object, index) {
$scope.form.$error.required[index].$setDirty();
}
);
}
因此,如果我的字段是这样完成的:
....ng-form="TextForm" ng-class="{ 'has-error': TextForm.$dirty && TextForm.$invalid }"....
即使有许多同名的子表单,它也会标记所有子表单。
也许我可以对无效字段做类似的事情?虽然尝试了很多东西,但没有任何效果......