2017-05-15 13 views
0

私は2つのフィールドの位置Aと位置Bからなる角型を持っています。 私が達成したいのは、両方のフィールドを比較し、フィールドが同じ場所にあるときはいつでも、有効または無効のフィールドを適切に設定します。2つの角型フィールドに同じ内容がないことを確認してください

私はabove.The同じロジックがとしても日付ピッカーに fromto日付を検証して適用することができている ng-change = validateLocations()を使用してロジックを挿入しますが、私が調査した内容をもとに、ディレクティブはこのようなシナリオに適しだろう試みた

よく私はこの点でlocationA入力フィールドに属性を置く

.directive("locationANotEqual", function() { 

     return { 

      restrict: "A", 
      require: "ngModel", 
      link: function (scope, element, attr, ctrl) { 

       ctrl.$validators.locationNotEqual= function (modelvalue) { 
        if (modelvalue !== scope.form.locationB) { 
         return true; 

        } else { 

         return false 
        } 
       } 
} 
} 
}); 

私はこのような何かを試してみました。 私は両方のフィールドのチェックを2ではなく1つのディレクティブに組み込むことができます。

答えて

0

ディレクティブに別のパラメータを追加し、scope.form.locationBではなくその値と比較してください。変更のためにその値にattributes.$observeを呼び出すと、指令のモデルに有効/無効とマークすることができます。

data-ng-model-options="{allowInvalid: true}"は、値が一致してもモデルが設定されるように使用されます。

app.directive('validateNotEqual', [ 
    function() { 
     return { 
      restrict: 'AE', 
      require: '^ngModel', 
      link: function(scope, element, attributes, ngModelCtrl) { 
       if (!ngModelCtrl) { 
        return; 
       } 

       var errorKey = 'notEqual'; 

       ngModelCtrl.$validators[errorKey] = function(value) { 
        return value !== attributes.validateNotEqual; 
       }; 

       attributes.$observe('validateNotEqual', function(value) { 
        ngModelCtrl.$setValidity(
         errorKey, 
         value !== ngModelCtrl.$modelValue); 
       }); 
      } 
     }; 
    } 
]); 

plunkerを参照してください。

+0

これは私のために働いた。 'ngModelCtrl。$ validators [errorKey]'を 'ngModelCtrl。$ validators.notEqual'に変更しました。 – lacoder

関連する問題