我正在尝试验证对象中的value字段是否包含电子邮件。一个数组中可能有许多这样的对象。当我评估它是否为$dirty时,它会说值是未定义的。验证也根本不起作用。我以前从未验证过对象数组,因为假设我访问数组中的数据是错误的,但我不确定
示例对象: Value将包含我试图验证的电子邮件
{
option: null,
Value: null,
Environment: null
}
验证:
validations: {
defaultFields: {
$each: {
Value: { email }
}
},
}
自定义错误函数:这就是在第一个If语句中抛出错误的原因,但是验证无论哪种方式都不起作用。
computed: {
emailErrors() {
const errors = [];
if (!this.$v.defaultFields.$each.Value.$dirty) return errors;
!this.$v.defaultFields.$each.Value.email && errors.push('You must enter a valid email');
return errors;
}
}
这是一个循环和循环中的字段的示例,我试图迭代并验证输入的是有效的电子邮件。
<v-form>
<div v-for="(defaultField, defaultIndex) in defaultFields" v-bind:key="`${defaultIndex}-default`">
<v-text-field
@input="$v.defaultFields.$each[defaultIndex].Value.$touch()"
@blur="$v.defaultFields.$each[defaultIndex].Value.$touch()"
:error-messages="emailErrors(defaultIndex)"
id="value"
v-model="defaultField.Value"
label="Email Address"
type="email"
></v-text-field>
</div>
</v-form>
发布于 2021-05-10 15:16:17
我正在尝试Funkel的方法。但它不起作用。但是,如果你像下面这样写这个email erros方法,它会工作得很好。除了emailErrors方法之外,一切都是正常的。
methods: {
emailErrors(defaultIndex) {
const errors = [];
if (!this.$v.defaultFields.$each[defaultIndex].Value.$dirty) return errors;
!this.$v.defaultFields.$each[defaultIndex].Value.email && errors.push('You must enter a valid email');
return errors;
}
}
发布于 2019-11-11 19:12:16
所以我才能弄明白这一点。我接收defaultIndex的方法
:error-messages="emailErrors(defaultIndex)"
位于计算的生命周期钩子中。在将其移动到方法生命周期钩子之后,我能够传入索引,并且它纠正了错误
<v-form>
<div v-for="(defaultField, defaultIndex) in defaultFields" v-bind:key="`${defaultIndex}-default`">
<v-text-field
@input="$v.defaultFields.$each[defaultIndex].Value.$touch()"
@blur="$v.defaultFields.$each[defaultIndex].Value.$touch()"
:error-messages="emailErrors(defaultIndex)"
id="value"
v-model="defaultField.Value"
label="Email Address"
type="email"
></v-text-field>
</div>
</v-form>
methods: {
emailErrors() {
const errors = [];
if (!this.$v.defaultFields.$each.Value.$dirty) return errors;
!this.$v.defaultFields.$each.Value.email && errors.push('You must enter a valid email');
return errors;
}
}
https://stackoverflow.com/questions/58790821
复制