如何在vee-validate中清除错误对象?

Ang*_*loC 11 vue.js

我想在注销方法中清除vee-validate中的所有错误,以下代码似乎不起作用,表单中的错误仍在显示,任何想法为什么?谢谢,

sign_out: function (e) {
    console.log('sign me out')
    var self = this
    firebase.auth().signOut().then(function () {

      console.log('sign out!')         
      self.info.email = ''
      self.errors.clear()  // clear errors object of vee-validate

    }, function (error) {

      console.log('sign out failed')

    })
  },
Run Code Online (Sandbox Code Playgroud)

这里有一个描述代码问题的jsFiddle,当你输入'123'时,会显示一个警告,然后当你点击'clear'时,字段设置为'',而errors.clear(),则期待警告在形式将消失,但它不是:

https://jsfiddle.net/8j3z82bv/1/

小智 12

版本 (3.x)

this.$refs.observer.reset();


tal*_*abi 9

这对我有用:

this.form.name = '';
this.form.email = '';

this.$nextTick(() => {
    this.errors.clear();
    this.$nextTick(() => {
        this.$validator.reset();
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案,“$nextTick”闭包就可以解决问题!还请记住您可以使用 this.errors.clear('scope') 来仅清除某些字段或表单 (2认同)

Amr*_*Aly 8

我想出了另一种解决方案,可以帮助。在您的输入中,我们将添加另一个侦听器,因此将如下所示:

<input type="email" name="email" v-model="info.email" v-validate="'required|email'" @input="validate">
Run Code Online (Sandbox Code Playgroud)

然后将添加调用vee-validate函数的validate函数,因此您的vue实例将如下所示:

var app = new Vue({
    el: '#app',
    data: {
        info: { email: '' }
    },

    methods: {

        onSignin: function (e) { },
        clear_proc: function (e) {
            delete this.info.email

            this.errors.clear()
        },
        validate: function () {
          this.$validator.validateAll();
        }
    }
})
Run Code Online (Sandbox Code Playgroud)


Arv*_*waj 8

使用以下方法:

this.errors.clear()


goo*_*all 8

如果使用 vee-validate (2.x) 使用 $validator 作为其他答案清楚地显示:

this.$validator.reset();
Run Code Online (Sandbox Code Playgroud)

但是,如果使用最新的 vee-validate (3.x),则$validator对象不再可用,您可以向ValidationObserver添加一个引用:

<validation-observer v-slot="{ invalid }" ref="form">
  <v-form @submit.prevent="save">
    ...
    <v-btn @click.stop="reset">Reset</v-btn>
    <v-btn type="submit" :disabled="invalid">Save</v-btn>
  </v-form>
</validation-observer>
Run Code Online (Sandbox Code Playgroud)

然后您可以按照此处记录的代码调用重置:

reset() {
  this.$refs.form.reset();
  ...
}
Run Code Online (Sandbox Code Playgroud)

或者你可以暴露内置复位功能上V型槽作为记录在这里

<validation-observer v-slot="{ invalid, reset }" ref="form">
  <v-form @submit.prevent="save" @reset.prevent="reset">
    ...
    <v-btn type="reset">Reset</v-btn>
    <v-btn type="submit" :disabled="invalid">Save</v-btn>
  </v-form>
</validation-observer>
Run Code Online (Sandbox Code Playgroud)