Я работаю над интерфейсом Vue для приложения, которое требует, чтобы все данные формы сохранялись локально перед отправкой на сервер, если проблема с сетевым подключением вызывает прерывание обслуживания. Я использую Vuex для поддержки всех данных формы в приложении, чтобы их можно было сохранять и восстанавливать в / из локального хранилища по мере необходимости.
Второе требование - проверка формы, для которой я собираюсь использовать библиотека Vuelidate. В документации предполагается, что для использования Vuelidate без v-model
все, что требуется, - это this.$v.touch()
в функции события. Это то, что я пробовал, но похоже, что это не работает.
См. Пример ниже:
<template>
<form>
<input name="full-name" v-model="fullName" placeholder="Full Name" />
</form>
</template>
<script>
export default {
name: "AForm"
computed: {
fullName: {
get() { return this.$store.state.fullName }
set(name) {
this.$v.touch();
this.$store.dispatch("updateFullName", name);
},
}
},
validations: {
fullName: minLength(4);
}
}
</script>
Когда я исследую $v.fullName
, значение просто равно true
. Когда я смотрю на весь объект $v
, я вижу $anyDirty: false
.
Codesandbox