2

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

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

有任何想法吗?

4

1 回答 1

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);
    }
});
于 2015-10-07T13:55:52.500 回答