I agree with the answers about events and the V-model for those above. However, I thought I would post what I found about components with several form elements that want to send back to their parents, as this seems to be one of the first articles returned by Google.
I know that the question indicates a single input, but this seems like the closest match and can save people some time with similar vue components. Also, no one has mentioned the .sync modifier .sync .
As far as I know, the v-model solution is suitable for only one input returned to their parent. I spent a little time searching for it, but the Vue documentation (2.3.0) really shows how to synchronize several details sent to the component to the parent (of course, via emit).
It is accordingly called the .sync modifier.
This is what the documentation says:
In some cases, we may need a βtwo-way snapβ for support. Unfortunately, true two-way binding can create maintenance problems because child components can mutate the parent, and the source of this mutation will not be obvious in both the parent and the child.
Therefore, instead we recommend generating events in the update:myPropName . For example, in a hypothetical component with the title we could report the intention to assign a new value with:
this.$emit('update:title', newTitle)
The parent can then listen to this event and update the local data property if it wants to. For example:
<text-document v-bind:title="doc.title" v-on:update:title="doc.title = $event" ></text-document>
For convenience, we offer an abbreviation for this template with the .sync modifier:
<text-document v-bind:title.sync="doc.title"></text-document>
You can also synchronize several at the same time, sending through an object. Check the documentation here