2017-06-14 13 views
0

私は次のディレクティブを作っていますディレクティブを使用して入力カスタムを検証する方法は?

.directive('checkValueTypeArray', function() { 
    return { 
     restrict: 'A', 
     require: 'ngModel', 
     scope: { 
      typeElement: '=', 
      typeValue: '=' 
     }, 
     link: function (scope, element, attrs, ngModel) { 

      var type_value = scope.typeValue; 

      ngModel.$validators.required = function (v) { 

       switch (type_value) { 

        case "integer": 
         status = isInt(v); 
         break; 

        case "string": 
         status = isNaN(v); 
         break; 

        case "object": 
         status = true; 
         break; 

        case "array": 
        case "array_objects": 
         status = true; 
         break; 

        case "boolean": 
         status = (v === "true" || v === "false"); 
         break; 

        case "float": 
         status = isNumeric(v); 
         break; 

        case "vector2": 
         status = (v.length === 2); 
         break; 

        case "vector3": 
         status = (v.length === 3); 
         break; 
       } 

       return status; 
      }; 
     } 
    }; 
}) 

としてのように、このディレクティブを呼び出す:

<input 
    ng-required="true" 
    check-value-type-array 
    type-value="node.type_value" 
    type-element="node.type" 
    ng-value="item" 
    class="form-control" 
    ng-change="changeArrayValue(inputValue, $index, node, $parent.$index)" 
    ng-model="inputValue" type="text" 
    placeholder="Value ($$node.type_value$$)" 
> 

問題はstatus場合はfalse、そうでない入力フィールドのエラー(色)ということです。

したがって、私のためには機能しません。 DOM Chromeに入力が表示されたら、分離モデルが表示されます。

答えて

0

私はあなたが$observeを追加する必要があることを前提としています

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(); 
     }); 
    } 
    }; 
}; 

がangular.jsソースからngRequiredディレクティブを見てください

関連する問題