Angular - form。$ dirty在$ compile

时间:2015-06-08 17:05:47

标签: angularjs compilation

我有一个指令附加到一个输入字段,该字段在其Link方法中调用$compile(element)(scope);。一切都运作良好,除非尝试使用以下内容:

ng-class="{ 'has-error' : frm.first_name.$invalid && frm.last_name.$dirty }"

$ invalid属性更新,但$ dirty(和$ pristine)始终保留其初始值。

plnkr example

我不确定如何解决这个问题。有没有人有任何想法?任何信息,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

你需要使用编译,而不是像这样的链接:

  app.directive('inputDataType', ['$compile', function ($compile) {
      var compileFn = function(element) {
          element.removeAttr('input-data-type');

          // Add pattern
          element.attr('ng-pattern', '^[a-zA-Z0-9]+$');

          // Make input field required
          element.attr('required', 'true');

          // Compile to attach new directives / pattern / required
          var fn = $compile(element);

          return function(scope){
              fn(scope);
          };
      };

      return {
          restrict: 'A',
          scope: false,
          terminal: true,
          priority: 1001,
          compile: compileFn
      };
  }]);

点击此处了解更多信息:creating a new directive with angularjs

更新了plunkr:http://plnkr.co/edit/85uHw9pSS3dEy9dGX2lz