首页 > 其他 > 详细

非父子组件通讯-vue

时间:2019-12-04 14:14:42      阅读:67      评论:0      收藏:0      [点我收藏+]

1、创建中央事件总线:额外的 new Vue()
2、$emit 触发事件
3、$on 监听事件

在使用组件的文件中:

<template>
  <div>
     <x-test  :bus="bus"></x-test>
     <x-right :bus="bus"></x-right>
  </div>
</template>
import Vue from ‘vue‘
export default {
  data () {
     return {
       username: ‘xissazi‘,
       bus: new Vue()
     }
  }
}

 

子组件 <x-right>触发事件:

<template>
  <div>
    <button @click="add">增加</button>
  </div>
</template>
<script>
export default {
  data() {
    return {
      num: 1
    }
  },
  props: [‘bus‘],
  methods: {
    add: function () {
      let n = this.num++
      this.bus.$emit(‘otherEvent‘, n)
    }
  }
}
</script>

 

子组件 <x-test>:

<template>
  <div>
    {{ num }}
  </div>
</template>
<script>
export default {
  data () {
    return {
      num: 0
    }
  },
  props:[‘name‘, ‘bus‘],
  mounted() {
    let that = this
    this.bus.$on(‘otherEvent‘, function(val){
      that.num = val
    })
  }
}
</script>

 

  

 

 

非父子组件通讯-vue

原文:https://www.cnblogs.com/yuyedaocao/p/11981638.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!