自动更新AngularJS中未触及的字段?
我在angularjs中使用表单验证,但我遇到了与Google Groups线程中相同的问题:,空表单在用户输入值之前对他们“喊叫” 为了解决这个问题,我仅在字段为自动更新AngularJS中未触及的字段?,angularjs,Angularjs,我在angularjs中使用表单验证,但我遇到了与Google Groups线程中相同的问题:,空表单在用户输入值之前对他们“喊叫” 为了解决这个问题,我仅在字段为$dirty(用户已触摸)时显示错误消息。但是,如果用户直接提交表单而不触摸任何内容,则不会提交表单(因为它不是$valid),但也不会显示任何错误消息(因为字段不是$dirty) 然后,在之前链接的Google Groups线程中建议“触摸”无效表单提交上的字段。我使用以下方法来实现这一点: $scope._updateUntouc
$dirty
(用户已触摸)时显示错误消息。但是,如果用户直接提交表单而不触摸任何内容,则不会提交表单(因为它不是$valid
),但也不会显示任何错误消息(因为字段不是$dirty
)
然后,在之前链接的Google Groups线程中建议“触摸”无效表单提交上的字段。我使用以下方法来实现这一点:
$scope._updateUntouchedFields = function(form) {
for(var f in form) {
var field = form[f];
if (field.$addControl !== undefined) {
// $addControl exists, this is a nested form
// recursively update fields in that form
$scope._updateUntouchedFields(field);
} else if (field.$setViewValue !== undefined) {
// $setViewValue exists, this is a field, just
// set the view value to the current view value
if(field.$dirty) continue;
field.$setViewValue(field.$viewValue);
}
}
};
如果表单在提交时无效,则调用上述函数。我对此有两个问题:
标记中添加一个指令,我可以将此功能放在该标记中?现在,我需要在每个有表单的控制器中使用它,并将逻辑添加到submit函数中这可能会对您有所帮助:谢谢,这是同样的问题,但这会引入一个局部变量,它是在提交时手动设置的,而不是使用$dirty状态。我不确定哪一个是最好的(两个都有效),但我仍然希望以某种方式自动处理这个问题。