自定义v-model在vue3不支持吗?我写了好像没效果

来源:2-8 vue如何自己实现v-model

qq_慕用6596887

2021-04-13 20:06:55

在Vue3下写的

Child组件:

<template>
<div>
<input type="text" :value="text" @input="$emit('change', $event.target.value)" />
</div>
</template>

<script>
// @ is an alias to /src

export default {
name: 'Child',
model: {
prop: 'text',
event: 'change'
},
props: {
text: String,
default () {
return ''
}
}
}
</script>

Parent组件:

<template>
<div>
<p>{{name}}</p>
<Child v-model="name" />
</div>
</template>
<script>
import Child from './Child'
export default {
name: 'Parent',
components: { Child },
data () {
return { name: 'Parent' }
}
}
</script>
<style lang="scss" scoped>
</style>



写回答

1回答

好帮手慕慕子

2021-04-14

同学你好,vue3支持自定义v-model,不过语法书写有些变化,具体可以参考如下解析:

1、触发事件名需要以update:modeValue这种格式书写,其中update:是固定格式,后面的modelValue是value绑定的值。即:

http://img.mukewang.com/climg/607652fb0908a7ec16160195.jpg

2、event属性值也需要修改,保持一致

http://img.mukewang.com/climg/6076532a09ac2b4416770614.jpg

3、父组件中的代码也需要调整,v-model后面需要添加子组件中value绑定值text。如下图所示:

http://img.mukewang.com/climg/607653540983b52607680243.jpg

经过上述修改后,效果如下:

http://img.mukewang.com/climg/607653d30ad2037303560183.jpg

祝学习愉快~

0

0 学习 · 15276 问题

查看课程