3 min read
•Question 35 of 37easyWhat 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" />