验证2与Vue 3 $模型未更新



为什么不更新v$.FormData.name.$model?

我正在将一个Vue 2应用程序更新到Vue 3。然而,我有麻烦得到验证的功能如预期。没有更新v$.FormData.name.$model,它只使用初始值。然而,v$.FormData.$model.name包含最新的值,但没有验证器的东西。

我已经将此控件转换为带有<script setup>的SFC,但是子控件和父控件仍在使用Options api。

我也试过通过v$.FormData.name.$model作为v-model。

const FormData = reactive({});
const rules = reactive(Validations); // { FormData : { name: {}...
const v$ = useVuelidate(rules, { FormData }, { $autoDirty: true, $lazy: true });
...
watch(
FormData,
(oldValue, newValue) => {
v$.value.FormData[control.vModel].$touch();
emit("event_form_updated", {
attributeName: props.control.vModel,
model: v$.value.FormData[control.vModel],
});
},
{ deep: true }
);
...
<component
:is="components[control.component]"
:control="control"
:options="control.options"
:values="control.value"
v-model="FormData[control.vModel]"
:v="v$.FormData[control.vModel]"
v-show="showCtrl(control)"
:tab-index="100 * (index + 1)"
/>
</span>

为其他可能遇到这个问题的人发布答案。看起来vuvalidate或者它的某个依赖项不喜欢vue/compat构建。一旦我切换到常规的Vue 3库,代理值开始正确地通过。

最新更新