成功提交后重置aurelia验证

时间:2015-10-18 00:04:09

标签: aurelia aurelia-validation

我正在为我的应用利用aurelia-validation。我想要做的是在成功提交后将表单重置为空值。

这是我的观点类:

@inject(Validation)
export class Inquire {

    @ensure(isName)
    firstName = '';

    @ensure(isName)
    lastName = '';

    . . .

    constructor(validation) {
        this.validation = validation.on(this);
    };

    sendInquiry() {
        this.validation.validate()
            .then(() => {
                // make API call here, which works
                // reset fields
                this.firstName = '';
                . . .
            }).catch((validationResult) => {
                console.log(validationResult);
            });
    };
};

如果我将firstNamelastName和其他字段设置回空字符串,则会重新触发表单验证。我怎样才能防止这种情况发生?

您似乎应该能够.clear().destroy()ValidationGroup作为referenced here in the source code,但这对我不起作用。

1 个答案:

答案 0 :(得分:2)

ValidationGroup的{​​{1}}方法应该可以解决问题。关键是你必须在>之后调用,你已经清除了字段:

clear()

在较新的Aurelia验证版本(2016年8月之后)中,您需要使用sendInquiry() { this.validation.validate() .then(() => { // make API call here, which works // reset fields this.firstName = ''; . . . //this resets the validation and clears the error messages this.validation.clear(); }).catch((validationResult) => { console.log(validationResult); }); }; 方法:

reset

请参阅documentation

  

this.validation.reset() 方法的反面是validate。在没有参数的情况下调用reset将取消先前呈现的任何验证结果。您可以提供重置指令以将重置限制为特定对象或属性:

reset