正在从API设置Vee-Validate初始值



我正在尝试使用Vee-Validate,并且我正在努力使用从API加载的初始值,并获取值,无论表单是否脏。

<script setup lang="ts">
const model: Ref<Company | any> = ref({})
const { handleSubmit, errors, meta } = useForm({
validationSchema: {
name: yup.string().required("Name is required")
},
initialValues: model
})
const handleCompanyOverviewSave = handleSubmit(async (form: any) => {
console.log(meta.value.dirty) // here it is always true
})
onMounted(async () => {
const api = useApi()
model.value = (await api.get(`/companies/${store.currentCompany.id}`)).data
})
</script>

问题是,当我使用像{ name: "test" }这样的简单对象作为初始值时,只有当我更改字段时,meta.dirty才真正为真。但是,当我使用从API加载的模型并将其分配给ref对象时,它会因为分配本身而变脏——我理解这一点。

但是,从API为useForm设置初始值的正确方法是什么?

感谢

如果您使用vee-validate: "^4.6.9"vue: "^3.2.39",则可能会使用以下解决方案:

  1. 以标签形式添加新的atribute:initial-values="formValues"
  2. 然后在setup((中添加:
const formValues = {
yourFieldName: 'init value',
};
  1. 仍在setup((中返回{formValues}

这项工作对我来说:D

相关内容

  • 没有找到相关文章

最新更新