要直接解决该问题,请像这样修改@lombardo的答案;
var dirtyFormControls = []; var myForm = $scope.myForm; angular.forEach(myForm, function(value, key) { if (typeof value === 'object' && value.hasOwnProperty('$modelValue') && value.$dirty) dirtyFormControls.push(value) });然后,数组“ dirtyFormControls”将包含脏的表单控件。
您还可以使用此技巧在提交表单时显示错误消息,以进行“必需”验证和所有其他验证。在您的commit()函数中,您将执行类似的操作;
if (form.$invalid) { form.$setDirty(); angular.forEach(form, function(value, key) { if (typeof value === 'object' && value.hasOwnProperty('$modelValue')) value.$setDirty(); }); //show user error summary at top of form. $('html, body').animate({ scrollTop: $("#myForm").offset().top }, 1000); return; }在您的表格中,您将显示错误消息
<span ng-messages="myForm['subject-' + $index].$error" ng-show="myForm['subject-' + $index].$dirty" > <span ng-message="required">Course subject is required.</span> </span>
当您使用“ ng-repeat”或类似方法动态生成控件时,上述解决方案很有用。



