-1
我试图通过使用自定义指令来实现异步验证。AngularJS - 插入自定义指令后,表单变为无效
这是指令
moduloArea.directive('uniqueName', function($http, $q) {
return {
require : 'ngModel',
link: function($scope, element, attrs, ngModel) {
ngModel.$asyncValidators.nombre = function(modelValue, viewValue) {
return $http.get('/checkUsernameAvailability/'+viewValue).then(
function(response) {
if (!response.data.validUsername) {
return $q.reject(response.data.errorMessage);
}
return true;
}
);
};
}
};
});
结果在控制台
正如你可以看到当根用户名输入的回报的JSON对象,因为此用户名已经拿了。
但是,在插入伪指令unique-name时,HTML格式为$ invalid。
<form name="registerUsernameForm" novalidate="novalidate">
<input type="text" name="username" data-ng-model="person.userName" data-unique-name="" required="required"/>
<span data-ng-show="registerUsernameForm.username.$error.uniqueName">This username is already taken.</span>
<button type="submit" data-ng-disabled="registerUsernameForm.$invalid || registerUsernameForm.$pending" data-ng-click="registerPerson(person)"> Save Person </button>
</form>
我使用的数据唯一的名称=“”(=“”),因为如果我不那么thymeleaf生成以下错误:
Attribute name "data-unique-name" associated with an element type "input" must be followed by the ' = ' character.
你这是什么认为可能是错误的?
感谢的人,像我8.我真的有这种小白,我从失去你能解释一下这个指令对我“功能解决(响应)”开始。 – wilson
已解决仅仅是清除代码的名称。你可以设置你想要的。 $ http promise基本上有2个回调。首先是成功,第二个可以看到一个错误。当休息API返回2XX状态,这意味着它是成功的。 4XX是客户端错误,5XX是服务器错误。即,如果名称不存在,则可以抛出错误。这意味着验证成功。 –