在$invalid上添加验证指令并从文本框中删除数据的指令

Directive that adds validation directive erasing data from textbox on $invalid

本文关键字:指令 文本 删除 数据 invalid 添加 验证      更新时间:2023-10-16

这个答案让我最接近于正确实现这一点,但一旦我的字段在表单上设置了$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

希望这能对你有所帮助。谢谢