1. 程式人生 > >vue eventBus實現兄弟元件互相通訊

vue eventBus實現兄弟元件互相通訊

vue父子元件的通訊可以通過props和emit來實現,而兄弟元件無法通過props和emit通訊。

但是可以採用eventBus的方式來實現通訊,主要的原理是新建一個bus,然後再兩個兄弟元件之間引入這個bus,一個元件監聽事件,而另一個元件則負責觸發事件。

父元件App.vue

<template>
  <div id="app">
    <img src="./assets/logo.png">
    <!--<router-view/>-->
    <car>我是汽車,我要加油</car>
    <gas-station>加油站</gas-station>
  </div>
</template>

<script>
import Car  from "./car.vue"
import GasStation  from "./car.vue"
export default {
  name: 'App',
  components:{Car,GasStation}
}
</script>

bus.js

import Vue from "vue"
export default new Vue(); 

car.vue

<template>
  <div @click="handle">汽車</div>
</template>
<script>
  import bus from "./bus"
  export default{
    methods:{
      handle(){
        //通過emit觸發事件,並傳值
        bus.$emit("eventTarget","我要加油");
      }
    }
  }
</script>

gasStation.vue

<template>
  <div>加油站</div>
</template>
<script>
  import bus from "./bus"
  export default{
    mounted(){
      //通過on監聽事件,回撥方法獲取資料
      bus.$on("eventTarget",v=>{
        console.log(v);
      });
    }
  }
</script>

當在car元件上觸發點選事件時,就會觸發bus上監聽的事件,而bus事件監聽在gasStation裡面,這個時候就會觸發gasStation

上的事件監聽,而通過回撥函式,就可以拿到car元件傳過來的資料,從而實現兄弟元件通訊。

相關推薦

vue eventBus實現兄弟元件互相通訊

vue父子元件的通訊可以通過props和emit來實現,而兄弟元件無法通過props和emit通訊。但是可以採用eventBus的方式來實現通訊,主要的原理是新建一個bus,然後再兩個兄弟元件之間引入這個bus,一個元件監聽事件,而另一個元件則負責觸發事件。父元件App.vu

vue實現父子元件兄弟元件通訊

父傳子 父元件(app.vue) <template> <div id="app"> <hello-world :person="user"><

20181129——Vue兄弟元件互相傳值 Vuex非子父兄弟傳值

最簡單的一個列子,可以利用子元件給父元件傳值,$emit事件,父元件接收之後再給另一個子元件進行傳值 這就是我前幾天一直在看的vuex外掛 Vue的元件通過Dispatch來呼叫action,action用於存放非同步邏輯或者少量的同步邏輯,然後Actions在commit給muta

vue兄弟元件之間通訊

有兩個元件A和B,怎麼實現A和B之間的通訊呢? 需要藉助於一個公共的Vue的例項物件,不同的元件可以通過該物件完成事件的繫結和觸發。 var bus = new Vue(); bus.$emit(); bus.$on(); 定義A元件: Vue.component("com-a",

vue實踐之兄弟元件之間資料和事件的傳遞

    使用vue進行元件化開發時,經常會遇到需要在業務元件中監聽某個公共元件的資料變化和事件觸發。大致歸類為兩種場景: 業務元件為公共元件的直接父元件(父子關係) *事件傳遞: 子元件定義一個方法,方法中通過this.$emit(‘event’)方式將觸發

Vue之非父子元件通訊

新建一個VueEvent.js,建立一個Vue例項充當中間傳輸媒介 //1.引入Vue import Vue from 'vue' //2.例項化一個Vue物件 var VueEvent = new V

vue實現基礎元件——拖拽元件

前言 pc端開發需要拖拽元件完成列表的順序交換,一般移動端的UI元件會包含,但是我在用的iview並沒有此功能的元件,於是手寫一個,實現起來很簡單。效果圖如下: 可以拖拽完成新排序,點選某一項可以觸發相關事件. 關於拖拽 drag & drop 拖放(

Android 通訊EventBus實現廣播與Activity通訊

本章節講述 如何利用EventBus 實現Android廣播與Activity通訊  根據廣播接收到的內容更新Activity資料本章節中的廣播是極光推送操作別名和標籤的廣播程式碼1:@Override

pubsub-js 實現RN元件通訊

1.簡介: 這是一個能夠在不同元件間傳遞訊息的庫,類似android開發中的EvenBus。它支援同步和非同步方式釋出訊息。它被設計為在單程序中使用,在多程序中時不建議使用它。 2.使用方式: 1>安裝:npm install pubsub-js

Vue-cli中非父子元件之間通訊

首先在main.js建立一箇中轉站,並且暴露出來。 //非父子元件通訊中心 const vueEvent=new Vue(); export default vueEvent; 然後在自己的頁面Page.vue中引入進來(路徑自行更改) import vueEvent

vue+webpack實現非同步元件載入

1.vue文件只給出了Vue.component('comp_name',function(resolve,reject){})在回撥裡ajax載入元件定義內容的例子,但現在習慣.vue檔案寫元件,在點選路由獲取.vue的時候怎麼弄呢? 2.webpack的coding-split支援commonjs/amd

Vue元件--父子元件以及元件間的互相通訊

父子元件 在一個元件內定義另一個元件,稱之為父子元件。 但是要注意的是:1.子元件只能在父元件內部使用(寫在父元件tempalte中);     2.預設情況下,子元件無法訪問父元件上的資料,每個元件例項的作用域是獨立的; 例如: JS部分

Vue 兄弟元件通訊(不使用Vuex)

方法一、建立bus中間機制,兄弟元件$emit 和$on進行通訊 方法二、子傳父,然後父傳子。 其實兩種方法原理相似。   我採用了方法二。 a元件中觸發父元件b的isRepotags事件傳遞res.data[0].repotags  

vue.js學習筆記(六)--利用v-model實現父子元件間的雙向通訊

部落格:https://fisher-zh.github.io/ 在Vue中,我們可以使用prop屬性來進行父子元件間的通訊,在之前的文章Vue踩坑之路–父子元件通訊總結中有介紹過。 但是prop 是單向繫結的,我們無法在元件中直接修改prop傳遞的屬性。

基於VUE技術實現的父子元件之間的通訊

效果圖: 改變前 改變後 方式1: 父子元件之間的通訊:基於props及事件派發的方式 <!DOCTYPE html> <html lang="en"> <head> <meta charset="

說說在 Vue.js 中如何實現元件通訊

1 用法 假設父元件的模板包含子元件,我們可以通過 props 來正向地把資料從父元件傳遞給子元件。props 可以是字串陣列,也可以是物件。 html: <div id="app"> <deniro-component message=""嫦娥四號"成功發射

說說在 Vue.js 中如何實現元件通訊(高階篇)

之前說過,可以使用 props 將資料從父元件傳遞給子元件。其實還有其它種的通訊方式,下面我們一一娓娓道來。 1 自定義事件 通過自定義事件,我們可以把資料從子元件傳輸回父元件。子元件通過 $emit() 來觸發事件,而父元件通過 $on() 來監聽事件,這是典型的觀察者模式。 htm

Vue 兄弟元件之間的通訊

使用Vue構建元件容易,但對於初學者要掌握Vue元件中的通訊還是有一定的難度。比如說,父元件如何向子元件通訊?子元件又是如何向父元件通訊?兄弟元件又是怎麼通訊?這些方面都是有關於元件通訊相關的知識。而且掌握Vue元件之間的通訊方式還是掌握Vue元件的另一種能力。 在Vue中

Vue中用v-model實現元件和子元件之間的資料通訊

在Vue中實現父子元件之間的資料通訊,除了用傳統的Props/emit還有sync外,還能使用v-model來實現(2.2.0 新增)。 型別:{ prop?: string, event?: string } model允許一個自定義元件在使用 v-mod

vue 解決兄弟元件、跨元件深層次的通訊問題

兄弟元件之間的通訊同樣是在專案中經常會遇到的元件間的通訊問題之一, 這種問題的最根本方法就是: 把兄弟元件內部的變數提升到一箇中央倉庫。 藉助父級元件鏈式互動 使子元件1 通過 $emit 通知父級, 父級再通過響應 子元件1 的事件去觸發子元件2的事件,這樣的