我正试图在我的Nuxt项目中使用Vuelidate。因此,我安装了Vuelidate软件包,然后在创建的plugins
的{{1}}文件夹中:
vuelidate.js
并在import Vue from 'vue'
import Vuelidate from 'vuelidate'
Vue.use(Vuelidate)
中对其进行定义
nuxt.config.js
顺便说一句,尝试不使用plugins: [
{src: '~/plugins/directives.js'},{src: '~/plugins/vuelidate.js',mode: 'client'}
],
,仅使用字符串数组-结果相同。
现在在我的组件中,有以下(验证)文本字段:
mode
我的进口:
<v-text-field
id='firstName'
v-model='formData.firstName'
label='First Name'
name='firstName'
prepend-icon='person'
type='text'
:error-messages='firstNameErrors'
@blur='$v.formData.firstName.$touch'
@input='$v.formData.firstName.$touch'
/>
其余的代码:
import { validationmixin } from 'vuelidate'
import {
required,minLength,} from 'vuelidate/lib/validators'
因此,我正在尝试验证firstName至少包含2个字符。开始输入后,我确实会看到错误消息,但是在2个或更多字符处,错误仍然存在。
我尝试在计算属性中控制台日志export default {
name: 'AuthForm',mixins: [validationmixin],validations: {
formData: {
firstName: {
/*required: requiredIf(function() {
return !this.isLogin
}),*/
minLength: minLength(2)
},},props: {
formData: {
type: Object,required: true,default: () => {}
}
},computed: {
firstNameErrors() {
const errors = []
if (!this.$v.formData.firstName.$dirty) {
return errors
}
!this.$v.formData.firstName.minLength && errors.push('First name must be at least 2 characters long')
// !this.$v.formData.firstName.required && errors.push('First name is required')
return errors
}
}
}
,但是一旦加载了组件并开始输入,它将被打印出来。如果我检查记录的对象,我确实会看到this.$v.formData
的字符数超过2个,但是无论我尝试执行什么操作(例如,在调用{{之前先调用this.$v.formData.firstName.$model
, 1}}再次输入,使用$reset
作为方法,而不是通过计算等...)
完全相同的代码在我的Vue项目中对我有用,但是这是我第一次与Nuxt合作,我不确定为什么该代码会停止工作。我想念什么?