Angularjs 如何将异步验证器添加到输入字段?
在文档中,它显示了以下内容:Angularjs 如何将异步验证器添加到输入字段?,angularjs,Angularjs,在文档中,它显示了以下内容: ngModel.$asyncValidators.uniqueUsername = function(modelValue, viewValue) { var value = modelValue || viewValue; // Lookup user by username return $http.get('/api/users/' + value). then(function resolved() { //userna
ngModel.$asyncValidators.uniqueUsername = function(modelValue, viewValue) {
var value = modelValue || viewValue;
// Lookup user by username
return $http.get('/api/users/' + value).
then(function resolved() {
//username exists, this means validation fails
return $q.reject('exists');
}, function rejected() {
//username does not exist, therefore this validation passes
return true;
});
};
但是如何将其与输入字段连接?它没有给出这方面的示例。您应该在指令链接函数中应用验证器。该指令必须需要ngModel,然后将该指令作为属性应用于输入标记。在您的情况下,可能看起来有点像这样:
angular.directive('isUniqueName', function () {
return {
require: 'ngModel',
link: function ($scope, $elem, $attrs, ngModel) {
ngModel.$asyncValidators.uniqueUsername = function(modelValue, viewValue) {
var value = modelValue || viewValue;
// Lookup user by username
return $http.get('/api/users/' + value).
then(function resolved() {
//username exists, this means validation fails
return $q.reject('exists');
}, function rejected() {
//username does not exist, therefore this validation passes
return true;
})
}
}
}
})
然后在HTML代码中:
<input type='text' name='username' ng-model='username' is-unique-name />