Angular1.5自定义指令在点击后设置ng-dirty



我已经为输入构建了一些自定义指令。如果输入的值无效,我想使用它们并显示错误消息。因此,每个ng消息都以"form.input.$dirty"为条件显示。

如果我点击使用我的自定义指令的输入,它会变得很脏。但我认为不应该这样。使用required或/和max的输入不显示消息,也不脏。所以我认为错误是在我的指令。

一个自定义指令:

{
  restrict: 'A',
  require: 'ngModel',
  scope: {
    ngModel: '=',
    countryCode: '<'
  },
  link: function (scope, element, attrs, ctrl) {
    middlewareConfigService.getCountries().then(function (response) {
      scope.countries = response.data;
      ctrl.$validate()
    })

    var isValidBic = function isValidBic(value) {
      if (!value)
        return true;
      value = value.toUpperCase();
      if (!(value.length === 8 || value.length === 11)) {
        return false;
      }
      if (scope.countryCode) {
        return value.substring(4, 6) === scope.countryCode
      }
      if (scope.countries) {
        return scope.countries.filter(function (country) {
            return country.key === value.substring(4, 6)
          }).length > 0;
      }
      return true;
    };
    ctrl.$validators.ngBic = function (modelValue) {
      return isValidBic(modelValue);
    };
  }
}

缺少什么吗?是指令的问题吗?

提前感谢

查看官方文档:

ngModel指令

ng-dirty:控件已与

交互

ngModelController

$dirty如果用户已经与控件交互,则返回True。


因此,这不是你的指令的错误,而是你对"脏"的概念的轻微误解。

最新更新