我目前正在处理一个看起来很普遍的问题,但我很难找到一种优雅的方式来处理它。这个问题归结为两个数字输入字段,其中一个字段必须小于另一个字段。为了实现这一点,我使用以下指令验证较低输入字段的输入,其中scope.maxThreshold是较高输入字段的输入:
testDirectives.directive('maxThreshold', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
ctrl.$parsers.unshift(function(viewValue) {
if (viewValue > scope.maxThreshold) {
ctrl.$setValidity('thresholdTooHigh', false);
return undefined;
} else {
ctrl.$setValidity('thresholdTooHigh', true);
return viewValue;
}
});
}
};
});
高输入字段的指令与比较开关非常相似。在用户在接收到验证错误后切换他们正在输入的字段之前,一切都很好。例如,如果较低的字段为5,而较高的字段为10,并且用户将较低的字段更改为15。现在该字段被标记为具有验证错误。现在,如果用户转到更高的输入字段并输入20,则用于该字段的指令会触发并且验证通过。问题是较低输入字段的有效性仍被标记为无效。如何处理,并使用用于更高输入字段的指令将较低输入字段标记为有效?谢谢。