如何有条件地将自定义验证器应用于表单字段?

时间:2015-03-07 08:48:48

标签: angularjs validation angular-directive

我有一个可重复使用的指令,其中自定义验证器的使用是可选的。

有条件地应用此验证器属性的好方法是什么?

<input type="text"
       name="{{name}}"
       require-items="{{requireitems}}"
       mongoose-error>

require-items是我想要传递给我的指令的可选验证。

该指令将被调用如下:

//with validator enabled
<my-directive requireitems="{{items.length}}"></my-directive>

//no validator
<my-directive></my-directive>

2 个答案:

答案 0 :(得分:1)

my-directive指令link功能中:

 link: function(scope, iElement, iAttrs, controller) {
        if(iAttrs.requireItems) { 
             // checks if require-items is present
             // process your validation here
        }
  }

答案 1 :(得分:0)

检查在ng-required中如何完成,使用属性并观察它们以便处理动态更改。

var requiredDirective = function() {
  return {
    restrict: 'A',
    require: '?ngModel',
    link: function(scope, elm, attr, ctrl) {
      if (!ctrl) return;
      attr.required = true; // force truthy in case we are on non input element

      ctrl.$validators.required = function(modelValue, viewValue) {
        return !attr.required || !ctrl.$isEmpty(viewValue);
      };

      attr.$observe('required', function() {
        ctrl.$validate();
      });
    }
  };
};

GitHub Link