Vue父子组件的双向绑定

本文介绍了在Vue中实现父子组件双向数据绑定的两种方法:使用v-model绑定数据并通过value属性接收,在属性改变时触发父组件的input事件;利用.vue2.3新增的.sync修饰符,通过监听update事件修改props,简化了子组件向父组件传递数据的过程。

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

在vue中,父组件向子组件传递数据使用的是props,而子组件向父组件传递数据则只能靠事件来完成。在vue2中已经禁止了子组件直接修改父组件传入的数据,那么在不使用vuex的情况下如何实现子组件对于props的双向绑定呢?

有两个办法:

  1. 通过v-model向子组件绑定数据:在vue2中已经允许向组件绑定v-model,而不仅仅是表单元素。在vue文档中很清楚的说明了v-model是value属性和input事件的一个语法糖,所以我们可以在父组件中通过v-model向子组件传递数据,而在子组件中通过value属性来接收数据,在对应属性的改变事件中触发父组件的input事件,并且传入改变后的值,这样就完成了父子组件的双向绑定。
// 父组件
 <child v-model="val"></child>
// 子组件
<input :value="value" @change="handleChange($event)"></input>
props: ['value'],
methods: {
    handleChange(event) {
        this.$emit('input', event.target.value);
    }
}
  1. 通过.sync修饰符:vue2.3又增加了.sync修饰符来实现父子组件的双向数据绑定,.sync实际上就是一个update事件的语法糖,在props后面加上.sync修饰符后,vue会自动监听这个update事件来对props进行修改,实际上和v-model的原理是一样的,比如一个name的属性只需要在子组件中在修改name的时候调用this.$emit('update:name', val)即可

转载于:https://my.oschina.net/prettypice/blog/1118864

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值