自定义验证指令的Vue.js问题

时间:2017-03-22 09:16:23

标签: javascript vue.js vuejs2

我在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"/>

1 个答案:

答案 0 :(得分:1)

我验证了同样的问题。我不确定问题是什么。该问题似乎已在here进行了讨论,但似乎并未实际解决。

我确实有一个解决方法。如果验证失败,$ errorBag的{​​{1}}属性似乎确实设置正确,因此您可以在保存方法中进行检查。

validator