问题描述
我需要为客户端验证错误显示不同的消息,例如必填消息( 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
。
如何执行呢?
1楼
您可以创建自定义的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>