Vue----事件总线

通过创建一个新的vm对象,专门统一注册事件,供所有组件共同操作,达到所有组件随意传值的效果

1.给要传值的组件调用this.$root.$emit("绑定函数名","传值")

2.接受值得组件调用this.$root.$on("绑定函数名",(e)=>{console.log(e)})

举例:

传值文件:

<template>

    <div>

        <button @click="change">传值给APP</button>

       

    </div>

</template>

<script>

export default{

           methods:{

            change(){

                this.$root.$emit("hand","tbox2给App传的值")

            }

        }

        }

</script>

 

接受值文件:

mounted(){

  this.$root.$on("hand",(e)=>{

    this.msg=e

  })

}

这样就可以直接向任何组件进行传值,只需要给替我们绑定$on和$emit事件就行了,但是这样得事件是绑定在根节点上的,根节点还要会绑定其他得任务,所以这样绑定会影响性能

优化:

在main.js中给vue得原型上添加一个$bus给其添加上$emit,$on,$off方法

Vue.prototype.$bus=new Vue({

  methods:{

    on(type,callback){

      this.$on(type,callback)

    },

    emit(type,value){

      this.$emit(type,value)

    },

    off(type,callback){

      this.$off(type,callback)

    }

  }

})

使用:

接收文件

mounted(){

  this.$bus.on("hand",(e)=>{

    this.msg=e

  })

}

 

     发送文件

        methods:{

            change(){

                this.$bus.emit("hand","tbox2给App传的值")

            }

        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值