成功提交后重置aurelia验证
问题描述:
我正在为我的应用使用aurelia-validation。我想要做的是在成功提交后将表单重置为空值。成功提交后重置aurelia验证
这是我的观点类:
@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);
});
};
};
如果我设置了firstName
,lastName
等领域回空字符串,表单验证被重新触发。我怎样才能防止这种情况发生?
看起来你应该能够拨打.clear()
或.destroy()
ValidationGroup
作为referenced here in the source code,但这不适合我。
答
ValidationGroup
的clear()
方法应该做的伎俩。问题的关键是,你必须把这个后您清除您的领域:
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);
});
};
在新奥里利亚验证版本(后2016八月),你需要使用reset
方法:
this.validation.reset()
看到在documentation:
validate
所述方法相反的是reset
。调用不带参数的重置将使任何以前呈现的验证结果不受理。你可以提供一个复位指令复位限制到特定的对象或属性:controller.reset(); controller.reset({ object: person }); controller.reset({ object: person, propertyName: 'firstName' });
+0
在Aurelia的新版本中,这个更改为'this.validation.reset()'。 – LStarky
调用'this.validation.clear()'清理出的字段后为我工作的罚款...做什么你的意思是“不适合我”?您在控制台中看到验证错误或错误? – nemesv
呵呵。我无法解释为什么它现在可以工作,但在将字段设置回其默认值后调用'.clear()'是**工作。奇怪的! – Brandon
调用'.clear()'应该是文档和示例的一部分。 – Brandon