2

有谁知道上述堆栈的任何工作示例?我知道 Vuelidate 在 Vue 3 中仍然是 alpha 版本,但我的猜测是,如果它可以与 Composition API 一起使用,那么应该有一种解决方法可以让它与类一起使用。

我正在尝试以下简单示例:

<template>
  <input
    v-model="v$.login.$model"
    :class="{ wrongInput: v$.login.$errors.lenght }"
    placeholder="Login"
  />
</template>

<script lang="ts">
import { Vue } from 'vue-class-component';
import useVuelidate from '@vuelidate/core';
import { required } from '@vuelidate/validators';

export default class LoginForm extends Vue {
  login = '';

  v$ = useVuelidate();

  validations() {
    return {
      login: {
        required,
      },
    };
  }
}
</script>

错误是:

Uncaught (in promise) TypeError: _ctx.v$.login is undefined

文档说我需要以某种方式通过规则和状态来使用Vuelidate(),但我无法弄清楚它是如何以及是否是错误的原因。任何帮助表示赞赏。

4

1 回答 1

5

在您的示例中,validations是一个组件方法,但 Vuelidate 期望它作为一个组件选项。

解决方法是validations进入@Options

import { Vue, Options } from 'vue-class-component';
import useVuelidate from '@vuelidate/core';
import { required } from '@vuelidate/validators'

@Options({
validations: {
    login: { required }
  }
})
export default class LoginForm extends Vue {
  login = '';

  v$ = useVuelidate();
}

经测试@vuelidate/core@2.0.0-alpha.15

于 2021-04-08T00:25:59.883 回答