/
githubmirror
/
vuetify
Обзор
Документация
Войти
/
githubmirror
/
vuetify
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
packages/docs/src/examples/v-form/rules-async.vue
83 строки
2 KB
John Leider
chore: add vue/attributes-order eslint rule
29 фев 2024, 07:06
29 фев 2024, 07:06
65aff8f
Код
Авторство
О чём код?
<template> <v-sheet class="mx-auto" max-width="300"> <v-form validate-on="submit lazy" @submit.prevent="submit"> <v-text-field v-model="userName" :rules="rules" label="User name" ></v-text-field> <v-btn :loading="loading" class="mt-2" text="Submit" type="submit" block ></v-btn> </v-form> </v-sheet> </template> <script setup> import { ref } from 'vue' const rules = [value => checkApi(value)] const loading = ref(false) const userName = ref('') async function submit (event) { loading.value = true const results = await event loading.value = false alert(JSON.stringify(results, null, 2)) } let timeout = -1 async function checkApi (userName) { return new Promise(resolve => { clearTimeout(timeout) timeout = setTimeout(() => { if (!userName) return resolve('Please enter a user name.') if (userName === 'johnleider') return resolve('User name already taken. Please try another one.') return resolve(true) }, 1000) }) } </script> <script> export default { data: vm => ({ loading: false, rules: [value => vm.checkApi(value)], timeout: null, userName: '', }), methods: { async submit (event) { this.loading = true const results = await event this.loading = false alert(JSON.stringify(results, null, 2)) }, async checkApi (userName) { return new Promise(resolve => { clearTimeout(this.timeout) this.timeout = setTimeout(() => { if (!userName) return resolve('Please enter a user name.') if (userName === 'johnleider') return resolve('User name already taken. Please try another one.') return resolve(true) }, 1000) }) }, }, } </script>