Je suis d'accord avec les réponses concernant l'émission d'événements et le modèle en V pour les réponses ci-dessus. Cependant, j'ai pensé que je posterais ce que j'ai trouvé sur les composants avec plusieurs éléments de formulaire qui veulent émettre vers leur parent puisque cela semble être l'un des premiers articles retournés par Google.
Je sais que la question spécifie une seule entrée, mais cela semblait être la plus proche et pourrait faire gagner du temps aux gens qui utilisent des composants Vue similaires. Par ailleurs, personne n'a mentionné le .sync
encore le modificateur.
Pour autant que je sache, le v-model
n'est adaptée qu'à une entrée retournant à son parent. J'ai pris un peu de temps pour le chercher, mais la documentation de Vue (2.3.0) montre comment synchroniser plusieurs props envoyés dans le composant pour les renvoyer au parent (via emit bien sûr).
On l'appelle à juste titre le .sync
modificateur.
Voici ce que le documentation dit :
Dans certains cas, nous pouvons avoir besoin d'une "liaison bidirectionnelle" pour un accessoire. Malheureusement, une véritable liaison bidirectionnelle peut créer des problèmes de maintenance, parce que les composants enfants peuvent muter le parent sans que la source de sans que la source de cette mutation soit évidente à la fois pour le parent et pour l'enfant.
C'est pourquoi nous recommandons plutôt d'émettre des événements selon le modèle suivant update:myPropName
. Par exemple, dans un composant hypothétique avec un title
nous pourrions communiquer l'intention d'assigner une nouvelle valeur avec :
this.$emit('update:title', newTitle)
Le parent peut alors écouter cet événement et mettre à jour une propriété de données locales, s'il le souhaite. Pour exemple :
<text-document
v-bind:title="doc.title"
v-on:update:title="doc.title = $event"
></text-document>
Par commodité, nous proposons un raccourci pour ce modèle avec le modificateur .sync :
<text-document v-bind:title.sync="doc.title"></text-document>
Vous pouvez également en synchroniser plusieurs à la fois en les envoyant par le biais d'un objet. Consultez la page documentation ici
2 votes
Pouvez-vous ajouter le code que vous avez essayé, qui ne fonctionne pas.
0 votes
Duplicata possible de Comment puis-je partager des données entre des composants non parents-enfants dans Vue ?
0 votes
Cette communication peut être établie par : emit event ou vuex.