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

时间:2016-10-31 13:51:24

标签: angularjs angularjs-directive

我为输入构建了一些自定义指令。 如果输入的值无效,我想使用它们并显示错误消息。 因此,每个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);
    };
  }
}

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

提前谢谢

1 个答案:

答案 0 :(得分:1)

查看官方文档:

ngModel directive

  

ng-dirty:控件已与

进行交互

ngModelController

  

$ dirty如果用户已经与控件进行了交互,则为真。


因此,这不是你的指示,而是你对“脏”概念的轻微误解。