以下はトリックを行う必要があります。やりたいことは、ng-model 属性を使用して日付入力を値にバインドすることです。ディレクティブ (私の例ではバリデーター) には、Isolate スコープがあります。date:'=' は、ローカル値 (date) と親スコープ値 (dateInput) の間の双方向バインディングを設定します。リンク関数では、dateValidation をディレクティブのスコープに割り当てることができます。これにより、日付間の比較が行われます。
最後に、 ng-show='dateValidation(date, comparisonDate)' は、dateValidation 関数が合格するかどうかに基づいて警告を表示および非表示にします。
また、HTML では comparisonDate のスペルが異なることに注意してください。
angular.module('YourApp')
.directive('validator', function() {
return {
restrict: 'E',
template: "<div ng-show='dateValidation(date, comparisonDate)'>Dates are out of order</div>",
scope: {
date:'=',
comparisonDate:'='
},
link: function(scope) {
scope.dateValidation = function(date, comparisonDate) {
// Your date comparison logic goes here
return parseInt(date) > parseInt(comparisonDate);
};
}
}
});
HTML で、次のように日付を ng-model 属性に添付します。
<p>Date 1: <input type="text" ng-model="dateInput"></p>
<p>Date 2: <input type="text" ng-model="comparisonDateInput"></p>
<validator date="dateInput" comparison-date="comparisonDateInput">
さて、これらの日付を整数として扱っていますが、これはあなたが望むものではありません。しかし、それがあなたにとっての難点だとは思えません。お役に立てれば!