可以用過一個vue實例Bus作為媒介瞪讼,要相互通信的兄弟組件之中妇垢,都引入Bus驳概,之后通過分別調用Bus事件觸發(fā)$emit和監(jiān)聽$on來實現組件之間的通信和參數傳遞贩虾,類似window的全局自定義事件。類似與子傳父搁进,只不過是利用一個新的vue示例作為媒介浪感,而不是當前vue示例(this)
// bus.js
import Vue from 'vue';
export default new Vue;
// a.js
<template>
? <div class='a'></div>
</template>
<script>
import Bus from 'bus.js' ;
export default {
? name: "a",
? created() {
? ? // 在需要的傳遞數據的時候調用sendData方法,這里模擬調用
? ? this.sendData();
? },
? methods: {
? ? sendData () {
? ? ? Bus.$emit('listenToA', 'hello');
? ? }
? }
}
</script>
// b.js
<template>
? <div class='b'></div>
</template>
<script>
import Bus from 'bus.js';
export default {
? name: "b",
? monted() {
? ? Bus.$on('listenToA', this.getAData);
? },
? methods: {
? ? getAData (val) {
? ? ? console.log(`a組件傳遞過來的數據: ${val}`); // hello
? ? }
? }
}
</script>