Angularjs 在服务器端验证多个字段

Angularjs 在服务器端验证多个字段,angularjs,validation,Angularjs,Validation,我有一个表单,需要在服务器端进行验证。后端使用一个请求验证多个字段。 我尝试在响应后添加验证消息。下面是一个例子: 这是我的html代码: <div ng-app="MyApp"> <div ng-controller="MyController"> <form name="MyForm" novalidate ng-submit="send()"> <div> <label>Email</

我有一个表单,需要在服务器端进行验证。后端使用一个请求验证多个字段。 我尝试在响应后添加验证消息。下面是一个例子:

这是我的html代码:

<div ng-app="MyApp">
  <div ng-controller="MyController">
    <form name="MyForm" novalidate ng-submit="send()">
      <div>
        <label>Email</label>
        <input type="email" name="email" ng-model="user.email" required>
        <div ng-show="MyForm.email.$invalid">error message</div>
      </div>
      <input type="submit" ng-disabled="MyForm.$invalid">
      <pre>{{ MyForm.email.$error | json }}</pre>
    </form>
  </div>
</div>
但我需要在值更改时删除错误。如何使用Angular实现它


例如:

只要用户使用
ng change
更改输入,就可以调用检查函数。因此,它将检查电子邮件当前是否无效,如果无效,它将再次设置为有效


$scope.check=函数(){
if($scope.MyForm.email.$valid==false){
$scope.MyForm.email.$setValidity('server-side-error',true);
}
}

您可以在此找到一个有效的版本

让我知道我的答案是否适合您,或者您是否还有任何疑问。:)这是可行的,但我还有一个问题。错误可能是动态的,我不是为每个输入编写检查函数,而是编写一个通用函数来处理所有服务器端错误。可能吗?您可以在
$scope.MyForm.$setValidity
上设置有效性。然后您可以使用
$scope.MyForm.$setValidity('email-in-use-error',false)
。唯一的问题是你无法知道什么输入无效。
var myApp = angular.module('MyApp', []);

myApp.controller("MyController", ['$scope', '$timeout', '$log', function($scope, $timeout, $log) {
    $scope.user = { "email" : "" }
  $scope.send = function() {
    $timeout(function() {
        $log.log("Response from server. Multiple fields validation.");
        $scope.MyForm["email"].$setValidity("server-side-error", false, $scope.MyForm)
        // here I want to add something what listen once on $scope.MyForm["email"] changed
    }, 1000);
  };
}]);
<input type="email" name="email" ng-model="user.email" ng-change="check()" required>

$scope.check = function(){
    if ($scope.MyForm.email.$valid == false){
        $scope.MyForm.email.$setValidity('server-side-error', true);
    }
}