Javascript Angular JS自定义验证$asyncvalidator未定义
正在尝试将异步验证程序添加到自定义用户名验证程序。但是,它会输出错误: TypeError:无法设置未定义的属性“username” 如何定义asyncvalidator?我以为我会被NgModel控制器自动控制Javascript Angular JS自定义验证$asyncvalidator未定义,javascript,angularjs,angularjs-directive,angularjs-validation,Javascript,Angularjs,Angularjs Directive,Angularjs Validation,正在尝试将异步验证程序添加到自定义用户名验证程序。但是,它会输出错误: TypeError:无法设置未定义的属性“username” 如何定义asyncvalidator?我以为我会被NgModel控制器自动控制 angular.module('myApp.commonDirectives',['myApp.services']).directive('username',['UsernameService',function(UsernameService){ 返回{ 限制:“A”, 要求
angular.module('myApp.commonDirectives',['myApp.services']).directive('username',['UsernameService',function(UsernameService){
返回{
限制:“A”,
要求:“ngModel”,
范围:{
hasFocus:“=用户名”
},
链接:函数(范围、元素、属性、ctrl){
范围$watch('hasFocus',函数(hasFocus){
如果(角度已定义(hasFocus)){
//关于模糊
如果(!hasFocus){
ctrl.$validated=false;
ctrl.$asyncValidators.username=函数(值){
UsernameService.validate(值)
.then(函数(resolvedData){
如果(解析数据){
ctrl.$validated=true;
ctrl.$setValidity('检查',true);
//ctrl.$setValidity('username',true);
}
否则{
ctrl.$validated=true;
ctrl.$setValidity('检查',false);
//ctrl.$setValidity('username',false);
}
}
);
}
}
//聚焦
否则{
ctrl.$setValidity('username',true);
ctrl.$setValidity('检查',true);
}
}
});
}
}
}])
$asyncValidators
可从angularjs 1.3及以上版本获得:
你在这里所做的一切都是复制了ANgular js文档中的示例。如果可以的话,我想继续使用Restangular插件,它被抽象到UsernameService中。为什么我的代码不起作用,而上面的代码却起作用?感谢您提供的任何帮助
asyncValidators
是angular 1.3的一项新功能^。。。。
try something like this :
angular.module('myModule').directive('usernameValidator', function($http, $q) {
return {
require: 'ngModel',
link: function(scope, element, attrs, ngModel) {
ngModel.$asyncValidators.username = function(modelValue, viewValue) {
return $http.post('/username-check', {username: viewValue}).then(
function(response) {
if (!response.data.validUsername) {
return $q.reject(response.data.errorMessage);
}
return true;
}
);
};
}
};
});