验证另一个输入上的表单输入依赖项

时间:2015-12-07 00:13:06

标签: angularjs

我有一个表单,我根据另一个输入字段(输入B)验证输入字段(输入A),这个字段到目前为止效果很好。但是当输入B的内容发生变化时,输入A的验证无法识别它,因此仍然表明验证有效。

我做了一个plunker here,我有一些问题。

我的链接功能:

link: function(scope, element, attrs, NgModelController) {
  NgModelController.$validators.invalid = function(modelValue, viewValue) {
    var value = modelValue || viewValue;
    var validation = value <= ((scope.dependency / 100) * 50) && value >= ((scope.dependency / 100) * 10);

    console.log('bar', value);
    console.log('dependency', scope.dependency);
    console.log('validation', value, validation);

    return validation;
  };
  scope.$watch('dependency', function(newValue) {
    NgModelController.$setValidity('invalid', NgModelController.$validators.invalid(newValue));
console.log('new dependency', newValue, NgModelController.$validators.invalid(newValue), NgModelController.$error.invalid);
  });
}
  1. 为什么NgModelController.$validators.invalid(newValue)会返回 true,而NgModelController.$error.invalid返回false
  2. 为什么我的$watch - 方法不起作用?我的错误在哪里?

1 个答案:

答案 0 :(得分:1)

这很容易:

scope.$watch('dependency', function(newValue) {
  // Force re-validation
  NgModelController.$validate(); 
});

请参阅更新后的plunker