#1 Data Analytics Program in India
₹2,499₹1,499Enroll Now
3 min read
Question 35 of 37easy

What is defineModel in Vue 3.4?

Simplified v-model for components.

What You'll Learn

  • defineModel syntax
  • Multiple models
  • Model modifiers

Before defineModel

code.txtVUE
<script setup>
const props = defineProps(['modelValue'])
const emit = defineEmits(['update:modelValue'])

function updateValue(value) {
  emit('update:modelValue', value)
}
</script>

<template>
  <input :value="modelValue" @input="updateValue($event.target.value)">
</template>

With defineModel

code.txtVUE
<script setup>
const model = defineModel()
</script>

<template>
  <input v-model="model">
</template>

Multiple Models

code.txtVUE
<script setup>
const firstName = defineModel('firstName')
const lastName = defineModel('lastName')
</script>

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

With Options

code.txtVUE
<script setup>
const model = defineModel({
  type: String,
  default: '',
  required: true
})
</script>

Model Modifiers

code.txtVUE
<script setup>
const [model, modifiers] = defineModel()

if (modifiers.capitalize) {
  // Handle capitalize modifier
}
</script>

<!-- Usage -->
<MyInput v-model.capitalize="text" />