组件上的 v-model 也可以接受一个参数:
<MyComponent v-model:title="bookTitle" />
在这种情况下,子组件应该使用 title prop 和 update:title 事件来更新父组件的值,而非默认的 modelValue prop 和 update:modelValue 事件。
子组件代码:
<script>
export default {
props: ['title'],
emits: ['update:title'],
}
</script>
<template>
<input type="text"
:value="title"
@input="$emit('update:title',$event.target.value)"
/>
</template>
父组件代码:
<script>
import MyComponent from './MyComponent.vue'
export default {
components: { MyComponent },
data() {
return {
title: 'v-model argument example'
}
}
}
</script>
<template>
<h1>{{ title }}</h1>
<MyComponent v-model:title="title"/>
</template>
子组件改成另一种实现 v-model 的形式:
<script>
export default {
props: ['title'],
emits: ['update:title'],
computed:{
title:{
get(){
return this.title
},
set(value){
this.$emit('update:title',value)
}
}
}
}
</script>
<template>
<input type="text" v-model="title"
/>
</template>