在$invalid上添加验证指令并从文本框中删除数据的指令
Directive that adds validation directive erasing data from textbox on $invalid
这个答案让我最接近于正确实现这一点,但一旦我的字段在表单上设置了$invalid
键(至少我认为是这样),它就会擦除我的文本框中的文本
这是我的plnk
为了处理指令,您需要添加priority:1000
,以便在执行任何指令之前执行代码&在编译DOM之前,您需要删除指令属性meta-validate
,这样它就不会在编译时执行。如果您不这样做,那么您将得到Maximum Call stack exceeds.
错误。
指令
myApp.directive('metaValidate', function ($compile) {
return {
restrict: 'A',
priority: 1000, //this setting is important to make sure it executes before other directives
compile: function compile(element, attrs) {
return {
pre: function preLink(scope, iElement, iAttrs, controller) { if(!element.attr('ng-maxlength')){
element.attr('ng-maxlength', '2');
element.removeAttr("meta-validate");
} },
post: function postLink(scope, iElement, iAttrs, controller) {
$compile(element)(scope);
}
};
}
};
});
工作Plunkr
希望这能对你有所帮助。谢谢
相关文章:
- mouseover和mouseleave文本颜色更改在指令链接中不起作用
- Angular指令中的最佳实践是将文本输入设置为英尺和英寸的格式
- HTML 标记在使用 Angular 指令时被视为纯文本
- 输入文本的ng重复没有填充指令中的ng模型
- 在编译AngularJS指令中的模板之前,先评估传入的文本
- 在$invalid上添加验证指令并从文本框中删除数据的指令
- 基于嵌套指令Angular的宽度更改文本
- 设置要显示的文本格式的指令
- AngularJS - 指令填充文本框,但ng-model没有值
- ng-bind 用作文本区域的指令,但不是输入标签
- maxlength在ckeditor angularjs指令的文本区域中不起作用
- AngularJS数字文本输入:指令与函数
- 如何在 angular.js 指令中使用调用元素的文本
- angularjs:如何访问指令(文本)值
- 如何在指令的情况下更改下拉列表的默认文本,并对指令应用所需的验证
- 指令没有't更改文本区域模型后发生火灾
- 如何防止ng模型覆盖指令生成的输入文本的值
- 为什么在编译包含指令的html文本(从db)时出现无限摘要错误
- angularjs指令来操作文本值
- 用于替换文本的 Angularjs 指令