您好我使用异步验证器来检查我的数据库中是否存在电子邮件,它检查得很好,它给了我正确的http请求,它可以正常使用,例如在第一次注册时,它会检查是否用户存在于我的数据库中。问题是例如当我用来恢复密码时。文档说:
"如果使用$ http,则服务器返回成功的HTTP响应代码非常重要
*为了完成验证和状态级别4xx
以拒绝验证"
所以我发生的事情是,当用户在恢复密码页面中插入电子邮件时,它会给出“400 - 错误请求”的响应。并使表单/输入无效。我需要更改此beavihour,因为当400请求给出验证为真时,如果响应为200,则验证为false。
示例代码Js:
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, element, attribute, controller) {
controller.$asyncValidators.uniqueEmail = function (email) {
return $http
.post('/api/email/availability', {value: email})
then(function(response) {
//username exists, this means validation fails
return $q.reject('exists');
}, function(response) {
//username does not exist, therefore this validation passes
return true;
})
};
}
}
答案 0 :(得分:0)
检查你在$ http回调中得到的响应对象,它包含状态代码。
function(response) {
if (response.status == 200) { return true; }
}