Joh*_*ohn 3 javascript validation vue.js vuetify.js
我想在自定义组件上使用Vuetify 自定义验证。
例如,我创建了一个日期时间选择器组件
日期时间选择器.vue
<template>
<v-menu v-model="menu" :close-on-content-click="false" full-width max-width="290" transition="scale-transition">
<!-- Text field -->
<v-text-field slot="activator" :label="label" append-icon="date_range" solo
:value="formattedDate" readonly></v-text-field>
<!-- Date picker -->
<v-date-picker v-model="selectedDate" locale="fr-fr" v-if="datePicker" :min="minDate">
<v-spacer></v-spacer>
<v-btn flat color="primary" @click="menu = false">{{ $t('cancel') }}</v-btn>
<v-btn flat color="primary" @click="chooseDate">{{ $t('ok') }}</v-btn>
</v-date-picker>
<!-- Time picker -->
<v-time-picker v-if="!datePicker" v-model="selectedTime" format="24hr" :min="minTime" :allowed-minutes="allowedStep">
<v-spacer></v-spacer>
<v-btn flat color="primary" @click="menu = false">{{ $t('cancel') }}</v-btn>
<v-btn flat color="primary" @click="chooseTime">{{ $t('ok') }}</v-btn>
</v-time-picker>
</v-menu>
</template>
Run Code Online (Sandbox Code Playgroud)
我想对父组件中的自定义组件应用规则验证。
家长.vue
<v-container fluid grid-list-xl>
<v-layout row wrap class="pt-4">
<v-flex xs12 md3>
<v-autocomplete ref="city" v-model="city" :items="locations" item-text="description" :label="$t('stores')" solo
:rules="[rules.required]"></v-autocomplete>
</v-flex>
<!-- Start date picker -->
<v-flex xs12 md3>
<date-time-picker ref="startDate" v-model="startDate" :label="$t('start_date')" :rules="[rules.required]"></date-time-picker>
</v-flex>
<!-- End date picker -->
<v-flex xs12 md3>
<date-time-picker v-model="endDate" :label="$t('end_date')"></date-time-picker>
</v-flex>
<v-flex xs12 md3>
<v-btn class="primary btn-bigger" @click="valdiate" block> {{ $t('search') }}</v-btn>
</v-flex>
</v-layout>
</v-container>
Run Code Online (Sandbox Code Playgroud)
我想做和我为我做的一样的事情v-autocomplete。我尝试在我的<date-time-picker>自<v-text-field>定义组件中使用规则道具,但它不起作用我收到此错误:
_this2.$refs[f].validate is not a function
我采用了与文档相同的代码,因此它适用于我的<v-autocomplete>但我不知道如何为我的自定义组件做。
您需要将规则数组作为 props 从父组件发送到子组件 (DateTimePicker),然后将其绑定到 v-text-field 组件中(在子组件内:DateTimePicker)。
props: {
rules: {
type: Array,
required: false
}
}
Run Code Online (Sandbox Code Playgroud)
<v-text-field slot="activator" :label="label" append-icon="date_range" solo
:value="formattedDate" readonly
:rules="rules">
</v-text-field>
Run Code Online (Sandbox Code Playgroud)
<v-flex xs12 md3>
<date-time-picker ref="startDate" v-model="startDate" :label="$t('start_date')"
:rules="[rules.required]">
</date-time-picker>
</v-flex>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8570 次 |
| 最近记录: |