当前位置: 代码迷 >> JavaScript >> AngularJs窗体的客户端和服务器端错误消息显示
  详细解决方案

AngularJs窗体的客户端和服务器端错误消息显示

热度:57   发布时间:2023-06-12 14:21:15.0

我需要为客户端验证错误显示不同的消息,例如必填消息( This Field is Required )和来自后端的服务器端错误消息,例如( Entered Password is incorrect )。

我现在正在做什么-在myController.js :我设置$scope.message = "This Field is Required"; 当用户不提供任何值并尝试提交时,将显示上述错误。

但是,一旦他给出了值,它将去服务器检查它是否有效,服务器返回另一个错误消息,即如果Entered Password is incorrect无效,则Entered Password is incorrect作为响应。

因此,如果我将此响应值设置为$scope.message ,它会覆盖先前的值并正确显示,但是我的问题是如果用户尝试使用空白值提交,则会再次显示覆盖的错误消息。 但是这里它应该显示必需的消息,即This Field is Required

如何执行呢?

您可以创建自定义的Angular Directive,以验证服务器上的密码。 如果有任何错误,请在$validators管道中添加错误。

示例:创建指令以检查用户名可用性

ngModule.directive('usernameAvailableValidator', ['$http', function($http) {
  return {
    require : 'ngModel',
    link : function($scope, element, attrs, ngModel) {
      ngModel.$asyncValidators.usernameAvailable = function(username) {
        return $http.get('/api/username-exists?u='+ username);
      };
    }
  }
}])

HTML:

<form name="myForm">
<!-- 
  first the required, pattern and minlength validators are executed
  and then the asynchronous username validator is triggered...
-->
<input type="text"
       class="input"
       name="username"
       minlength="4"
       maxlength="15"
       ng-model="form.data.username"
       pattern="^[-\w]+$"
       username-available-validator
       placeholder="Choose a username for yourself"
       required />
<div ng-if="myForm.colorCode.$error.usernameAvailable">Error Message HERE!</div>
</form>
  相关解决方案