Modèle Vue 3 V transmis au composant petit-enfant
P粉731861241
P粉731861241 2024-03-26 15:37:53
0
1
547

J'ai trois composants et je souhaite transmettre un modèle réactif du parent -> enfant -> petit-enfant (champ vee-validate).

Le composant parent ressemble donc à :

<template>
  <child v-model="formData" />
</template>
.
.
.
setup() {
  const formData = ref<CreateAccount>({
      email: "",
      firstName: "",
      lastName: ""
  });

  return {
    formData,
  };
}

Le composant enfant (avec le composant petit-enfant) ressemble à :

<template>
  <Field
    type="text"
    name="email"
    v-model="modelValue.email" ????
  />
</template>

export default defineComponent({
    name: "step-2",
    components: {
      Field,
    },
    props: {
      modelValue: {
        type: Object,
        required: true,
      },
    },
    emits: ["update:modelValue"],
  },
});

Maintenant, mon problème est que je ne peux pas simplement transmettre la valeur modelValue à la propriété Field v-model, donc je ne sais pas s'il y a une série d'événements ou s'il faut refactoriser la valeur modelValue enfant ?

P粉731861241
P粉731861241

répondre à tous(1)
P粉044526217

J'ai fini par utiliser la solution suivante dans mon composant enfant :

<template>
  <Field
    type="text"
    name="email"
    v-model="model.email"
  />
</template>

export default defineComponent({
  name: "step-2",
  components: {
    Field,
  },
  props: {
    modelValue: {
      type: Object,
      required: true,
    },
  },
  computed: {
    model: {
      get() {
        return this.modelValue;
      },
      set(value) {
        this.$emit("update:modelValue", value);
      },
    },
  },
},
});
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal