AngularJS $ setValidity正在添加$ errors以形成我无法摆脱的错误

时间:2014-07-22 16:15:26

标签: angularjs

我真的陷入了由此行造成的问题:ctrl.$setValidity('match', currentValue);

.directive('formMatch', ['$parse', '$timeout', '$log', function ($parse, $timeout, $log) {
    return {
      restrict: 'A'
      ,priority: 2
      ,require: 'ngModel'
      ,link: function(scope, elem, attrs, ctrl) {
        scope.$watch(function() {
          return (ctrl.$pristine && angular.isUndefined(ctrl.$modelValue)) || $parse(attrs.match)(scope) === ctrl.$modelValue;
        }, function(currentValue) {
          ctrl.$setValidity('match', currentValue);
        });
      }
    };
  }])

导致包含此输入的表单具有$ error值...例如

email: false
match: Array[1]
required: Array[2]

甚至在调用ctrl.$setValidity('match', true);之后,这些错误也不会消失。但是如果我只是注释掉那一行,表单就会再次验证并正常工作。它似乎在某种程度上是" ctrl" var在调用此行时有时会引用该表单,但对我而言,它似乎不可能引用输入和表单......

无论如何都要做一个表格。$ updateValidity()?不是说这会有所帮助,但这是我想尝试的,因为我说,每个单独的表单输入都是$ valid === true。

0 个答案:

没有答案