Angular自定义指令实现一般性的表单验证
来源:互联网 发布:鞍钢职工居家工资算法 编辑:程序博客网 时间:2024/06/05 20:22
指令的生命周期
- inject阶段
directive将指令注入使得HTML模板可以使用; - complie和link
.directive('myDirective',function(){ return{ compile:function(tEle,tAttrs,transcludeFn){ //被实例化时执行一次,无法访问指令的$scope,可操作原始的DOM节点,编译完成返回link对象 return { pre: function(scope, iElem, iAttrs){ console.log(name + ': pre link => '+iElem.html()); }, post: function(scope, iElem, iAttrs){ console.log(name + ': post link => ' + iElem.html()); } } }});
link中的pre-link和post-link大概理解成link之前和link之后,link之后表明了DOM结构稳定了,可以对子DOM进行一系列的操作,而pre-link不适合我们去添加设计子节点的行为。
可参考这本书AngularJS深度剖析与最佳实践
自定义指令的实现
- 定义指令名ngChange;
restrict指明指令的应用方式
1. E-元素;
2. A-属性;
3. C-类;
4. M-注释;link:这里的link指的是post-link;
.directive("ngChange",function(){ return { restrict:"A", link: function (scope, iElement, iAttrs,ngController) { var ele=iElement[0].nextElementSibling; var valid=true; scope.$watch(iAttrs.ngModel, function (newVal,oldVal) { if(newVal==undefined){ valid=false; return; } if(newVal==""){ valid=false; ele.innerHTML="输入框不能为空"; return; } if(Number(newVal)>20||Number(newVal)<0){ valid=false; ele.innerHTML="输入必须大于0且小于20"; return; }else if(newVal.indexOf(".")==-1){ valid=true; return; } var reg=/[\d]{1,2}\.[\d]{2}/; if(!reg.test(newVal)){ iElement[0].value=newVal.slice(0,5); valid=false; ele.innerHTML="输入只能为两位小数"; return; } ele.innerHTML=""; }); iElement[0].onblur=function(){ if(!valid){ return; } ele.innerHTML=""; var reg=/[\d]{1,2}/; if(reg.test(this.value)){ this.value=this.value+".00"; } }; }});
view使用:
<label for="validnum">数字有效性验证</label><input type="text" name="validnum" ng-model="validnum" maxlength="5" ngChange><span></span>
可达到的效果:
对于验证规则相同的表单不区分表单中的ng-model,对表单进行验证。这也是将验证写成指令形式的目的。
0 0
- Angular自定义指令实现一般性的表单验证
- angular常用的表单验证指令
- angular数据验证:自定义指令
- angular js实现表单验证
- angular自定义表单验证----用户名唯一
- angular创建自定义的指令
- angular表单验证及 提交功能实现
- Vue之自定义指令进行表单验证。
- angular-简单的表单验证注册demo
- Angular的自定义指令以及实例
- Angular的自定义指令及其实例
- angular表单验证
- angular 之表单验证
- angular js表单验证
- angular表单验证
- angular之表单验证
- Angular表单验证
- Angular表单验证
- OpenNLP入门实验
- 浅谈LDAP服务
- hadoop输入分片计算(Map Task个数的确定) - 有无之中
- ftrace学习资料整理
- elasticsearch启动警告
- Angular自定义指令实现一般性的表单验证
- linux之find命令详解
- 我的16秋招感受
- Linux音频驱动-PCM设备
- 自然语言词性示例
- NS3中回调
- CIPAddressCtrl::GetAddress使用心得
- iOS 学习笔记 --- 定时器NSTimer、CADisplayLink、GCD
- Hibernate 离线查询参数