How to handle multiple v-model bindings in Vue

Managing multiple v-model bindings is essential for building complex Vue components that need to synchronize multiple data properties with parent components. As the creator of CoreUI, a widely used open-source UI library, I’ve implemented sophisticated two-way binding patterns in Vue components over 25 years of development. From my expertise, the most effective approach in Vue 3 is using named v-models with the defineEmits and defineProps composition API functions. This enables clean, type-safe multiple data bindings between parent and child components.

Use named v-models in Vue 3 to handle multiple two-way data bindings.

<!-- Child Component -->
<script setup>
const props = defineProps(['firstName', 'lastName'])
const emit = defineEmits(['update:firstName', 'update:lastName'])
</script>

<!-- Parent Component -->
<UserForm v-model:first-name="user.firstName" v-model:last-name="user.lastName" />

Here the child component defines props for both values and corresponding update events using the update: prefix convention. The parent component uses named v-models with v-model:first-name and v-model:last-name syntax to bind different data properties. Vue automatically handles the two-way synchronization when the child emits the update events.

Best Practice Note:

This is the same multiple binding pattern we use in CoreUI Vue components for complex form controls and data inputs. Always use descriptive names for your v-model bindings and ensure prop names match the emit event suffixes for Vue’s automatic v-model handling to work correctly.


Speed up your responsive apps and websites with fully-featured, ready-to-use open-source admin panel templates—free to use and built for efficiency.


About the Author

Subscribe to our newsletter
Get early information about new products, product updates and blog posts.
Mastering JavaScript List Comprehension: The Ultimate Guide
Mastering JavaScript List Comprehension: The Ultimate Guide

CSS Selector for Parent Element
CSS Selector for Parent Element

What is the Difference Between Null and Undefined in JavaScript
What is the Difference Between Null and Undefined in JavaScript

How to Center a Button in CSS
How to Center a Button in CSS

Answers by CoreUI Core Team