Angularjs 如何在Angular中的所有表单元素上重置$invalid标志

Angularjs 如何在Angular中的所有表单元素上重置$invalid标志,angularjs,validation,Angularjs,Validation,我是Angular的新手,我正在尝试实现一个ASP.Net数据注释错误处理服务。一切都很好,只是在重新提交表单时,我似乎无法重置表单上的$invalid标志 在我的服务中,我正在做: app.service("submitFormSvc", ['$http', '$parse', function ($http, $parse) { this.submitForm = function (url, form, $scope) { form.$setPristine();

我是Angular的新手,我正在尝试实现一个ASP.Net数据注释错误处理服务。一切都很好,只是在重新提交表单时,我似乎无法重置表单上的$invalid标志

在我的服务中,我正在做:

app.service("submitFormSvc", ['$http', '$parse', function ($http, $parse) {
    this.submitForm = function (url, form, $scope) {
       form.$setPristine();

        ... More code here ...
       // Set individual form fields if an error is returned from the server
       $parse(form.$name + '.' + dotNetFieldName + '.$invalid').assign($scope, true);
    }
});
和我的控制器:

$scope.login = function () {
    submitFormSvc.submitForm('/api/login', $scope.loginForm, $scope)
}
我的印象是$setPristine会重置表单上的所有值,但事实并非如此


我是否需要遍历所有表单变量并单独重置它们?如果是,我会怎么做?

你看过这篇so帖子吗?还有,你使用的是什么版本的AngularJS?我使用的是1.2.2。我发现$setPristine只影响$dirty标志,这实际上工作得很好。我正在寻找将重置$invalid标志的姐妹方法。我假设表单上的$setValidity可以做到这一点,但它似乎不起作用。我不确定您的代码是否涉及$setValidity,但您是否签出了此帖子?