フィールドが変更されたときに正しく呼び出されるカスタム検証ディレクティブがあります。ただし、このフィールドが有効かどうかは、別のフィールドの値にも基づいています。この第2のフィールドは、それが重要であれば選択リストである。別のフィールドが変更されたときのフィールドのトリガー検証
2番目のフォームが変更されたときに手動で検証をトリガできる方法があるかどうかは疑問でした。おそらくng-change
イベントを使用します。このようなことを処理する適切な方法は何ですか?
は、ここに私のディレクティブです:
angular.module('myApp', []).
directive('validage', function() {
return {
require: 'ngModel',
link: function (scope, elem, attr, ngModel) {
function validate(value) {
var valid = true;
if ((GetDateDifference(new Date(value), new Date()) < 16 || GetDateDifference(new Date(value), new Date()) > 129)
&& scope.dep.DependantType == "Spouse") {
valid = false;
}
ngModel.$setValidity('validage', valid);
return value;
}
//For DOM -> model validation
ngModel.$parsers.unshift(function (value) {
var valid = true;
if ((GetDateDifference(new Date(value), new Date()) < 16 || GetDateDifference(new Date(value), new Date()) > 129)
&& scope.dep.DependantType == "Spouse") {
valid = false;
}
ngModel.$setValidity('validage', valid);
return value;
});
//For model -> DOM validation
ngModel.$formatters.unshift(function (value) {
var valid = true;
if ((GetDateDifference(new Date(value), new Date()) < 16 || GetDateDifference(new Date(value), new Date()) > 129)
&& scope.dep.DependantType == "Spouse") {
valid = false;
}
ngModel.$setValidity('validage', valid);
return value;
});
}
};
});
あなたはAngularJSに新しいしている場合、私は間違いなく、これらの2件の記事読んで推薦:part 1 & part 2を。 AngularJSフォームの概要です。
StackOverflowの[この回答](http://stackoverflow.com/a/16886177/2057033)を参照してください。 – Blackhole
と角度1.3を使用すると、ngModel。$ validate(); –
anglular 1.2では、ngModel。$ setViewValue()で$ parserのすべての関数を手動で起動できます。ですから、自分自身に設定してください:ngModel。$ setViewValue(ngModel。$ viewValue) – likesalmon