Component v-model
Two-way Binding
v-model
supports two-way binding.
<!-- Native Element -->
<input v-model="searchText" />
<!-- Custom Component -->
<CustomInput v-model="searchText" />
Example: CustomInput.vue
<template>
<input :value="modelValue" @input="$emit('update:modelValue', $event.target.value)" />
<script>
defineProps(['modelValue']);
defineEmits(['update:modelValue']);
For multiple bindings:
<UserName v-model:first-name="first" v-model:last-name="last" />
Example: UserName.vue
<template>
<input :value="firstName" @input="$emit('update:firstName', $event.target.value)" />
<input :value="lastName" @input="$emit('update:lastName', $event.target.value)" />
<script>
defineProps({ firstName: String, lastName: String });
defineEmits(['update:firstName', 'update:lastName']);
This provides a concise overview of component registration, props usage, and v-model
implementation in Vue.js.
Last updated