Sono d'accordo con l'emissione dell'evento e le risposte del modello v per quelle sopra. Tuttavia, ho pensato di pubblicare ciò che ho trovato sui componenti con più elementi del modulo che vogliono restituire al loro genitore poiché questo sembra uno dei primi articoli restituiti da Google.
So che la domanda specifica un singolo input, ma questa sembrava la corrispondenza più vicina e potrebbe far risparmiare tempo alle persone con componenti VUE simili. Inoltre, nessuno ha ancora menzionato il .sync
modificatore.
Per quanto ne so, la v-model
soluzione è adatta solo per un input che ritorna al loro genitore. Ho impiegato un po 'di tempo a cercarlo, ma la documentazione di Vue (2.3.0) mostra come sincronizzare più oggetti di scena inviati nel componente al genitore (tramite emit ovviamente).
È appropriatamente chiamato il .sync
modificatore.
Ecco cosa dice la documentazione :
In alcuni casi, potremmo aver bisogno di "rilegatura a due vie" per un sostegno. Sfortunatamente, il vero legame bidirezionale può creare problemi di manutenzione, poiché i componenti figlio possono mutare il genitore senza che la fonte di tale mutazione sia evidente sia nel genitore che nel figlio.
Ecco perché, invece, ti consigliamo di emettere eventi nel modello di
update:myPropName
. Ad esempio, in un ipotetico componente con un
title
prop, potremmo comunicare l'intento di assegnare un nuovo valore con:
this.$emit('update:title', newTitle)
Quindi il genitore può ascoltare quell'evento e aggiornare una proprietà di dati locali, se lo desidera. Per esempio:
<text-document
v-bind:title="doc.title"
v-on:update:title="doc.title = $event"
></text-document>
Per comodità, offriamo una scorciatoia per questo modello con il modificatore .sync:
<text-document v-bind:title.sync="doc.title"></text-document>
Puoi anche sincronizzare più alla volta inviando tramite un oggetto. Consulta la documentazione qui