全局事件总线

  1. 实现任意组件间的通信

  2. 数据发送方,调用$emit('事件名称',要发送的数据) 数据接收方,调用$on('事件名称',事件处理函数) 最后在beforeDestory()函数中解绑自定义事件

  3. 安装全局事件总线$bus

    $on,$emit,$off属性只有在vue.prototype上才有,而vc,vm都可以访问vue.prototype,所以每个组件都可以获得$on,$emit,$off属性,将$bus绑定在vue.prototype上,每个组件都可以看见它,并且将$bus配置为vm,即$bus也会拥有$on,$emit,$off属性

    new Vue({
      render: h => h(App),
      beforeCreate() {
        Vue.prototype.$bus = this   //this就是vm
      }
    }).$mount('#app')
  4. 使用事件总线

    1. 接受数据:A组件想接受数据,就在A组件中给$bus绑定自定义事件,事件的回调留在A组件

        methods: {
          //改变done的值
          checkTodos(id) {
            this.todos.forEach((todo) => {
              if (todo.id == id) todo.done = !todo.done;
            });
          },
        },
      created() {
          this.$bus.$on("checkTodos", this.checkTodos); 
          //第一个是事件名,第二个是要执行的回调函数,也可以直接写成箭头函数
          this.$bus.$on('checkTodos',(val)=>{
              this.todos = val
          })
        },
        beforeDestroy() {
          this.$bus.$off("checkTodos");
      },
      ​
    5. 提供数据
       this.$bus.$emit("checkTodos", id);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值