【问题标题】:Vuetify form validate a custom componentVuetify 表单验证自定义组件
【发布时间】:2021-04-29 17:21:32
【问题描述】:

我有一个带有嵌套文本字段的自定义日期选择器,我想知道是否有任何方法可以在 this.$refs.form.validate() 函数上验证我的组件。

我的组件:

<template>
    <v-menu
        v-model="dateMenu"
        :close-on-content-click="false"
        offset-y
        max-width="290"
    >
        <template v-slot:activator="{ on, attrs }">
            <v-text-field
                prepend-icon="mdi-calendar"
                :label="label"
                v-on="on"
                v-bind="attrs"
                v-model="dateFormatted"
                readonly
                clearable
                :rules="rules"
                :dense="dense"
            ></v-text-field>
        </template>
        <template default>
            <v-date-picker
                locale="es-AR"
                v-model="date"
                no-title
            ></v-date-picker>
        </template>
    </v-menu>
</template>

【问题讨论】:

    标签: vue.js vuetify.js


    【解决方案1】:

    最好的做法是尽可能避免使用 $ref,因为它是手动访问 DOM。你可以阅读它here

    我建议使用您自己的代码来访问 v-model 中的数据并在那里检查您的验证,例如:

    // Template area
    <v-text-field v-model="firstname" :rules="nameRules" label="First Name" required>
    </v-text-field>
    
    // Data area
    firstname: '',
    lastname: '',
    nameRules: [
      v => !!v || 'Name is required',
      v => (v && v.length <= 10) || 'Name must be less than 10 characters',
    ],
    

    【讨论】:

    • 您提到的“最佳实践”是避免在 Vue 中进行 DOM 操作(这正是文档所述)。当您操作 DOM 时,无论出于何种原因,推荐的方法是使用$refs。我不会说最好的做法是避免使用$refs,因为它可能会被误解,尤其是新手开发人员。
    • 我同意并纠正。谢谢你的澄清!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多