Vue自定义组件通过v-model实现父子组件双向同步通信

本文深入探讨了Vue.js中父子组件间的通信机制,通过具体示例讲解了如何使用v-model进行双向数据绑定,并展示了父组件如何监听子组件的输入变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

父组件

<template>
	<div>
		<child v-model="name"/>
		{{name.ab}}
		{{name.ac}}
	</div>
</template>
<script>
import child from './child'
export default {
  name: 'parent',
    components: { child },
  data () {
 	 return {
       name: {
         ab: '111',
         ac: '222'
       },
     }
  }
}
</script>

子组件

<template>
  <div v-if="value">
    <el-input v-model="value.ab" autocomplete="off" @change="handleInput" placeholder="请输入客户姓名"></el-input>
  </div>
</template>

<script>
  export default {
    name: 'child',
    data () {
      return {
      }
    },
    model: {
      prop: 'value', // prop说:我要将value作为该组件被使用(被父组件调用)时,v-model能取到的值
      event: 'change' // event说:我emit(触发)change的时候,参数的值就是父组件v-model收到的值。
    },
    props: {
      value: Object
    },
    methods: {
      handleInput (e) {
        this.$emit('change', this.value)
      }
    }
  }
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值