我有一个自定义验证指令,在更改一个字段时会正确调用该指令。但是,该字段是否有效还取决于另一个字段的值。如果这很重要,则第二个字段是一个选择列表。
我想知道是否有某种方法可以在更改第二个表单时手动触发验证。也许通过使用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 篇文章:第 1部分和第 2 部分。它们是 AngularJS 表单的概述。