VUE兄弟组件传值--事件车

在面试的过程中,被问到了vue中兄弟组件传值是怎么进行的,因为技术不够只回答了效率很低的办法:子传父,父传子。自己上网查了下,发现大部分都是运用事件车的办法解决,创建中央事件总线。自己小小试着实现了下,这里做一个记录。
(1)首先创建一个js文件,里面只创建一个vue实例,作为eventbus。
VUE兄弟组件传值--事件车_第1张图片
在这里插入图片描述
(2)创建两个子组件,一个mytest,一个mytest2。
mytest里点击button实现mytest2的数据的转换。

<template>
  <div class="a">
    <button @click="tn">button</button>
  </div>
</template>

<script>
  import eventBus from '../event.js'
    export default {
        name: "MyTest",
      data(){
          return{
            msg:'我是Anita'
          }

            },
      methods:{
    tn:function(){
      eventBus.$emit("ChangeMe",this.msg)   //$emit这个方法会触发一个事件
    }
  }
    }
</script>

<style scoped>

</style>
<template>
  <div class="components-a">
    <div>{{this.Text}}</div>
  </div>
</template>

<script>
  import eventBus from '../event.js'
    export default {
        name: "MyTest2",
      data(){
          return{
            Text:'我是组件2'
          }
      },
      created:function(){
        this.bbtn();
      },
      methods:{
        bbtn:function(){
          eventBus.$on("ChangeMe",(message)=>{  
            this.Text = message
          })
        }
      }

    }
</script>

<style scoped>

</style>

注意:
$on后用箭头函数,改变this的指向;
$off销毁事件,手动销毁

你可能感兴趣的:(vue.js)