我觉得我要在表单中复制很多代码。
每个表单组件都具有以下结构:
template
<v-col cols="12" sm="6" md="4">
<v-text-field
name="name"
v-model="user.name"
:rules='nameRules'
:label="$t('fields.name')"
color="elegant"
:error="!!errors.name"
:error-messages="errors.name ? errors.name : null"
></v-text-field>
</v-col>
<v-col cols="12" sm="6" md="4">
<v-text-field
name="surname1"
v-model="user.surname1"
:rules='surname1Rules'
:label="$t('fields.surname1')"
color="elegant"
:error="!!errors.surname1"
:error-messages="errors.surname1 ? errors.surname1 : null"
></v-text-field>
</v-col>
<v-col cols="12" sm="6" md="4">
<v-text-field
name="surname2"
v-model="user.surname2"
:rules='surname2Rules'
:label="$t('fields.surname2')"
color="elegant"
:error="!!errors.surname2"
:error-messages="errors.surname2 ? errors.surname2 : null"
></v-text-field>
</v-col>
<v-col cols="12" sm="6" md="4">
<v-text-field
name="email"
v-model="user.email"
:rules='emailRules'
:label="$t('fields.email')"
color="elegant"
:error="!!errors.email"
:error-messages="errors.email ? errors.email : null"
></v-text-field>
</v-col>
script
data() {
return {
nameRules: [
v => !!v || this.$i18n.translate('validation.required',{'attribute': ''}),v => (v && v.length <= 100) || this.$i18n.translate('validation.lt.string',{
'attribute': '','value': 100
}),],surname1Rules: [
v => !!v || this.$i18n.translate('validation.required',surname2Rules: [
v => (!v || v.length <= 100) || this.$i18n.translate('validation.lt.string',emailRules: [
v => !!v || this.$i18n.translate('validation.required',v => /.+@.+\..+/.test(v) || this.$i18n.translate('validation.email',
我对模板没问题,除了写我需要的所有字段外别无选择。 但是在脚本上,规则正在其他组件上重复。
例如,电子邮件字段将始终具有相同的规则:(必填,最大:100,必须为电子邮件)。
那么这可能是一种单独定义所有规则并在特定组件上使用它们的方法吗?喜欢导入吗?