步步深入,理解vue的双向绑定 二(vue的订阅者模式)

在Vue开发中,一些大型项目或者涉及到一些很复杂的组件,需要在不同父组件下面的子组件或者孙组件之间传递数据的。如下图:
在这里插入图片描述
可以看出,数据从2号传到4号,就得经过7号,10号,再从10号传到8号,再传到4号,过程非常复杂,代码也显得非常臃肿,难以维护。显然仅仅用单向数据流或者双向绑定,并不能很好的满足我们的开发要求。

这时候,我就推荐使用全新的开发模式,发布-订阅模式,它是基于Vue的 o n , on, on,off,$emit这三个API开发。原理是创建一个事件中心绑定到每个组件上面,只要有一个组件的有新的数据发布到上面,其他已经订阅的组件就可以同步获取。如图:

在这里插入图片描述
这样一来,1号组件向4号组件发送数据,只要经过事件中心就行了,而4号组件只要$on订阅,这样就能获取数据。

好的,原理就先说到这里,下面来个栗子:

父组件://创建事件中心
data(){
return {
eventBus: new Vue()
}
},
provide(){
return {
eventBus: this.eventBus
}
}

子组件://注入事件中心
inject: [‘eventBus’]
然后,无论子组件还是父组件都能通过这样来传递数据:

this.eventBus. e m i t ( ) / / 发 布 t h i s . e v e n t B u s . emit() // 发布 this.eventBus. emit()//this.eventBus.on() // 订阅
this.eventBus.$off() // 取消订阅

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值