Angularjs 通过比较两个输入以确保其中一个低于另一个,如何触发对任一输入的更改的计算?

Angularjs 通过比较两个输入以确保其中一个低于另一个,如何触发对任一输入的更改的计算?,angularjs,validation,angularjs-directive,Angularjs,Validation,Angularjs Directive,我有一个名为kcInputComparer的指令,它有一个名为lessThan的验证器。我把它放在一个输入上,与第二个输入进行比较。如果我用验证器更改输入的值,验证器将启动并计算,但如果我更改第二个输入,则不会进行验证。我是否可以在第二个输入上放置某种$watch,以便从其中一个角度进行验证?以下是我的指示: angular.module('eFile.shared') .directive('kcInputComparer', function() { return {

我有一个名为kcInputComparer的指令,它有一个名为lessThan的验证器。我把它放在一个输入上,与第二个输入进行比较。如果我用验证器更改输入的值,验证器将启动并计算,但如果我更改第二个输入,则不会进行验证。我是否可以在第二个输入上放置某种$watch,以便从其中一个角度进行验证?以下是我的指示:

angular.module('eFile.shared')
   .directive('kcInputComparer', function() {
     return {
       restrict: "A",
       require: "ngModel",
       link: function(scope, element, attributes, ngModel) {
         ngModel.$validators.lessThan = function(modelValue) {
           if (modelValue && scope.lessThan) {
             return parseFloat(modelValue) < parseFloat(scope.lessThan);
           }
           return true;
         };
       },
       scope: {
         lessThan: '=lessThan'
       }
    };
});
angular.module('eFile.shared'))
.directive('kcInputComparer',function(){
返回{
限制:“A”,
要求:“ngModel”,
链接:功能(范围、元素、属性、模型){
ngModel.$validators.lessThan=函数(modelValue){
if(modelValue和scope.lessThan){
返回parseFloat(modelValue)
因此,如果我有:

<input id="input1" ng-model="vm.input1" kc-input-comparer less-than="vm.input2"/>
<input id="input1" ng-model="vm.input2"/>


我把50作为输入1,49作为输入2,这是无效的。如果我将input1设置为48,它将恢复为有效。然而,如果输入1有50,输入2有49,我把输入2改为51,什么也不会发生。我需要能够触发它

验证程序仅在模型值更改时自动触发

您可以使用
$watch
ngModel.$validate()
触发如下验证:

scope.$watch(function () {
    return scope.lessThan;
  }, function () {
    ngModel.$validate();
});  

是的,您可以在指令中放入$watch来触发验证。那会是什么样子?我可以把$watch(scope.lessThan?)放进去吗@sheilak刚刚回答了你怎么做