成功提交后重置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); 
      }); 
    }; 
}; 

如果我设置了firstNamelastName等领域回空字符串,表单验证被重新触发。我怎样才能防止这种情况发生?

看起来你应该能够拨打.clear().destroy()ValidationGroup作为referenced here in the source code,但这不适合我。

+1

调用'this.validation.clear()'清理出的字段后为我工作的罚款...做什么你的意思是“不适合我”?您在控制台中看到验证错误或错误? – nemesv

+0

呵呵。我无法解释为什么它现在可以工作,但在将字段设置回其默认值后调用'.clear()'是**工作。奇怪的! – Brandon

+1

调用'.clear()'应该是文档和示例的一部分。 – Brandon

ValidationGroupclear()方法应该做的伎俩。问题的关键是,你必须把这个后您清除您的领域:

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