角度形式:触发字段的重新验证

时间:2015-10-06 05:15:50

标签: angularjs angularjs-forms

我有一个包含两个字段的表单:validFrom和validUntil。 ValidUntil有一个自定义验证器,如果该值在validFrom中的值之前,则该字段将无效。只要我正在编辑它的validUntil就可以正常工作。但是,当表单处于无效状态,并且我将validFrom值编辑为更早的时候,我希望表单可以验证,但事实并非如此。如何触发重新验证?

我尝试了vm.form.validUntil.$validate(),这似乎做了一些事情,但只是在我第二次更新validFrom值之后。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

添加$timeout就可以了。问题是在验证器中,它依赖于范围变量,该范围变量尚未使用刚输入的值进行更新。我不确定这是否是最佳解决方案,如果其他人有更好的解决方案,我很乐意听到它。

vm.promotion[key] = value;

$timeout(function() { // this was added
    if (key === 'validFrom') {
        vm.form.validUntil.$validate();
    }

    if (vm.form.$valid) {
        PromotionManager.update(vm.promotion);
    }
});