用于验证的自定义 Angular JS 指令
Custom Angular JS directive for validation
我是JavaScript和Angular JS的新手。我必须编写一个自定义指令来验证在.aspx页面中传递的输入字段的内容;更准确地说,我必须检查输入中传递的值的用户名是否已存在。在我的指导中,我必须调用一个检查数据库中重复项的服务,然后根据结果,我必须执行成功回调/错误回调,并返回一个包含有关验证检查的信息的对象和一条消息。特别是,我被困在关于回调和返回带有信息的对象的最后一部分(在我的版本中我不能使用 $.defer)。
不幸的是,我无法利用 Angular 提供的表单(即$asynchrounous验证器和 $q.defer)已经存在的自定义验证,因为我必须使用旧版本的 Angular 1.2.26。你能给我一些关于如何实现它的提示/例子吗?我正在努力尝试,但我仍然发现自定义指令有点困难,我找不到自定义验证的示例(基于 Angular 1.3 $asynch验证器的示例除外)。
提前谢谢你
您可以在指令的链接或控制器函数中轻松使用$http服务,并对响应数据进行操作。具体是什么问题,你能说得更清楚吗?
您可以为此编写自己的指令: 示例
app.directive('asyncNameCheck', function($http){
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, elm, attr, ngModel){
elm.bind('input', function(){
ngModel.$setValidity('asyncValid', false);
$http.get('http://graph.facebook.com/facebook')
.success(function(data){
ngModel.$setValidity('asyncValid', true);
});
})
}
}
})
并在 HTML 中
<form name="myform">
<input name="testfield" async-name-check required ng-model="test"/>
<p ng-show="myform.testfield.$error.asyncValid">This field is invalid</p>
</form>
请注意,此指令不是可重用的指令,但可以满足您的要求。 不要在控制器中执行此操作,我花了很多时间进行角度验证,如果您在控制器中控制验证,以后会给您带来很多问题。
相关文章:
- Angular.js指令格式化程序只调用过一次,或者如何告诉ngModel表现得像watchCollection
- 带有 ng-repeat 的 Angular JS 指令无法遍历子元素
- Angular js指令使用控制器作为语法ng点击不起作用
- 如何在angular js指令之后触发回调
- "TypeError:无法调用方法'匹配'未定义的“;Angular JS指令中的Morris
- 测试angular js指令
- 加载HTML后编译JS指令
- 角度.js指令模板 URL 无法绑定范围
- Angular JS指令在visualforce(salesforce)中不起作用
- 角度 JS 指令卸载事件或等效项
- 用于验证的自定义 Angular JS 指令
- 如何将集合传递给 angular.js 指令
- Angular js 指令控制器访问范围属性,但返回未定义
- 使用角度 JS 指令时出错
- 将多个变量传递给 Angular JS 指令
- 如何在 angular.js 指令中使用调用元素的文本
- Karma 单元测试 Angular JS 指令与 externalUrl
- 角度JS指令作用域变量关系
- angular.js指令双向绑定范围更新
- 调整容器大小时,Cytoscape.js指令不会使维度无效