vue-组件通信


1. 父传子

v-bind:data = "data"
props:{
    data:Object,
}

2. 子传父

this.$emit('send',data);
<div v-on:send = "sendData"></div>

3. 兄弟通信

3.1 Vue事件总线(EventBus)

原理是通过一个新的Vue实例,使用 $on 和 $emit 方法通信

(1) 初始化

可以定义一个文件

// event-bus.js
import Vue from 'vue'
export const EventBus = new Vue()

或者是主文件

// main.js
Vue.prototype.$EventBus = new Vue()

(2) 发送事件

<!-- A.vue -->
<template>
    <button @click="sendMsg()">-</button>
</template>

<script> 
import { EventBus } from "../event-bus.js";
export default {
  methods: {
    sendMsg() {
      EventBus.$emit("aMsg", '来自A页面的消息');
    }
  }
}; 
</script>

(3) 接收事件

<!-- IncrementCount.vue -->
<template>
  <p>{{msg}}</p>
</template>

<script> 
import { 
  EventBus 
} from "../event-bus.js";
export default {
  data(){
    return {
      msg: ''
    }
  },
  mounted() {
    EventBus.$on("aMsg", (msg) => {
      // A发送来的消息
      this.msg = msg;
    });
  }
};
</script>

(2) Vuex

//方便管理

详细看另一篇


文章作者: iamfugui
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 iamfugui !
评论
  目录