Angularjs 如何在Angular中的所有表单元素上重置$invalid标志
我是Angular的新手,我正在尝试实现一个ASP.Net数据注释错误处理服务。一切都很好,只是在重新提交表单时,我似乎无法重置表单上的$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();
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,但您是否签出了此帖子?