我有一个表单,我根据另一个输入字段(输入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);
});
}
NgModelController.$validators.invalid(newValue)
会返回
true
,而NgModelController.$error.invalid
返回false
?$watch
- 方法不起作用?我的错误在哪里?答案 0 :(得分:1)
这很容易:
scope.$watch('dependency', function(newValue) {
// Force re-validation
NgModelController.$validate();
});
请参阅更新后的plunker。