Estoy de acuerdo con la emisión de eventos y las respuestas del modelo v para los anteriores. Sin embargo, pensé en publicar lo que encontré sobre los componentes con múltiples elementos de formulario que desean emitir a sus padres, ya que este parece ser uno de los primeros artículos devueltos por Google.
Sé que la pregunta especifica una sola entrada, pero esta parecía la coincidencia más cercana y podría ahorrarle tiempo a las personas con componentes vue similares. Además, nadie ha mencionado el .sync
modificador todavía.
Hasta donde yo sé, la v-model
solución solo es adecuada para una entrada que regresa a su padre. Me tomó un poco de tiempo buscarlo, pero la documentación de Vue (2.3.0) muestra cómo sincronizar múltiples accesorios enviados en el componente de regreso al padre (por medio de la emisión, por supuesto).
Se llama apropiadamente el .sync
modificador.
Esto es lo que dice la documentación :
En algunos casos, es posible que necesitemos "enlace bidireccional" para un accesorio. Desafortunadamente, el enlace bidireccional verdadero puede crear problemas de mantenimiento, porque los componentes secundarios pueden mutar al padre sin que la fuente de esa mutación sea obvia tanto en el padre como en el niño.
Es por eso que, en cambio, recomendamos emitir eventos en el patrón de
update:myPropName
. Por ejemplo, en un componente hipotético con un
title
accesorio, podríamos comunicar la intención de asignar un nuevo valor con:
this.$emit('update:title', newTitle)
Luego, el padre puede escuchar ese evento y actualizar una propiedad de datos local, si así lo desea. Por ejemplo:
<text-document
v-bind:title="doc.title"
v-on:update:title="doc.title = $event"
></text-document>
Para mayor comodidad, ofrecemos una abreviatura para este patrón con el modificador .sync:
<text-document v-bind:title.sync="doc.title"></text-document>
También puede sincronizar múltiples a la vez enviando a través de un objeto. Mira la documentación aquí