我在vue.js中有一个自定义验证指令。在文本框中键入时,Validator工作正常,但只要我调用this.$validator.validateAll()
,它就会通过验证,即使它不应该。
我在这里做错了什么?
验证码
//validiates email in database. if email is not same as initial and email is taken, it will fail validation
VeeValidate.Validator.extend('unique-email', {
messages: {
hr: (field, args) => {
return "Some error message";
}
},
validate: (value, args) => {
var initialEmail = args[0];
if (initialEmail === value) {
return { valid: true }
} else {
return profileService.emailTaken(value).then((response) => {
var emailTaken = response.data;
return {valid:!emailTaken};
});
}
}
});
保存按钮
methods: {
save: function() {
this.$validator.validateAll().then(() => {
//should not enter here, but it does
});
}
},
Html elemenent
<input type="text" class="form-control" name="EMail" v-validate="'required|unique-email:'+ initialEmail" v-model="profile.EMail"/>
答案 0 :(得分:1)
我验证了同样的问题。我不确定问题是什么。该问题似乎已在here进行了讨论,但似乎并未实际解决。
我确实有一个解决方法。如果验证失败,$ errorBag
的{{1}}属性似乎确实设置正确,因此您可以在保存方法中进行检查。
validator