使用场景
子组件想要使用父组件的值,又想去改父组件的值
示例
父组件home
<template>
<home-child v-model="vModelData"></home-child>
</template>
<script>
import HomeChild from './child/HomeChild.vue'
export default {
name: 'Home',
components: {
HomeChild
},
data () {
return {
vModelData: 'hello v-model'
}
}
}
</script>
<style scoped lang="less"></style>
子组件homeChild
<template>
<div class="box">
<span>{{ value }}</span>
<button @click="testVModel">测试v-model</button>
</div>
</template>
<script>
export default {
name: 'HomeChild',
props: {
value: {
type: String,
default: ''
}
},
methods: {
testVModel () {
this.$emit('input', '我是子组件')
}
}
}
</script>
<style scoped lang="less"></style>
点击前
点击后
V-Model的本质
1.给子组件的value传个变量
2.监听子组件的input
事件,并且把传过来的值赋给父组件的变量
<template>
<home-child :value="vModelData" @input="vModelData = $event"></home-child>
</template>
<script>
import HomeChild from './child/HomeChild.vue'
export default {
name: 'Home',
components: {
HomeChild
},
data () {
return {
vModelData: 'hello v-model'
}
}
}
</script>
<style scoped lang="less"></style>