欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue 組件之間事件觸發(fā)($emit)與event Bus($on)的用法說明

 更新時間:2020年07月28日 14:42:15   作者:yehaocheng520  
這篇文章主要介紹了vue 組件之間事件觸發(fā)($emit)與event Bus($on)的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

組件之間事件觸發(fā)

之前使用組件,并不是很頻繁,是水平的問題,目前工作中,公司大佬帶著我手寫過一個組件,再此很感謝他的指導。目前簡單的組件已經(jīng)有了自己的邏輯思維,正在從低級碼農(nóng)向中級碼農(nóng)蛻變。廢話不多說。上圖看看組件情況。

新增按鈕組件:

操作按鈕組合組件:

此時有個需求就是,無論是哪個按鈕,如果改變了列表中的數(shù)據(jù),列表需要實時更新數(shù)據(jù)。

此時就需要用到組件間的事件觸發(fā)。

父子組件之間事件觸發(fā)可以使用$emit

$emit的使用方法如下:

在子組件中,寫一個click點擊事件。比如:

cancelCU() {
 this.dialogVisible = false;
 this.$emit('closeAdd')
}

然后在父組件中子組件上,添加一個 @closeAdd="closeAddClick",closeAddClick函數(shù)就是執(zhí)行了。

新增按鈕可以使用這種方式。但是操作按鈕組合中的組件,就屬于孫子組件了,孫子組件執(zhí)行click事件,列表數(shù)據(jù)需要刷新,此時通過孫子組件觸發(fā)父組件事件,父組件觸發(fā)爺爺組件,就比較麻煩了,此時可以通過event bus實現(xiàn)跨組件的事件觸發(fā)了。

具體使用方法如下:

第一步:

新建一個js文件,來創(chuàng)建出我們的eventBus,我們把它命名為bus.js

內(nèi)容如下:

import Vue from 'vue';

export default new Vue();

第二步:

在孫子組件和爺爺組件中,都需要引入這個bus.js

import Bus from 'common/js/bus.js';

孫子組件執(zhí)行方法如下:

addCart(event) { 
 //如果傳遞參數(shù)的話,可以如下這樣寫
 Bus.$emit('getTarget', event.target); 
 //如果不傳遞參數(shù)可以如下;
 Bus.$emit('getTarget');
}

這里我們在click組件中每次點擊,都會在bus中觸發(fā)這個名為'getTarget'的事件,并將點擊事件的event.target順著事件傳遞出去。

接著,我們要在show組件中的created()鉤子中調(diào)用bus監(jiān)聽這個事件,并接收參數(shù):

created() { 
 //如果傳遞參數(shù)的話,爺爺組件需要這樣接收
 Bus.$on('getTarget', target => { 
  console.log(target); 
 }); 
 //如果不傳遞參數(shù)的話,則可以如下處理
 Bus.$on('getTarget',()=>{
 //此處執(zhí)行對應的函數(shù)操作
 })
} 

這樣,在每次click組件的點擊事件中,就會把event.target傳遞到show中,并console出來。

所以eventBus的使用還是非常便捷的,但是如果是中大型項目,通信比較復雜,還是建議大家直接使用vuex。

補充知識:vue 2 使用Bus.js進行兄弟(非父子)組件通信 簡單案例

vue2中廢棄了$dispatch和$broadcast廣播和分發(fā)事件的方法。父子組件中可以用props和$emit()。如何實現(xiàn)非父子組件間的通信,可以通過實例一個vue實例Bus作為媒介,要相互通信的兄弟組件之中,都引入Bus,之后通過分別調(diào)用Bus事件觸發(fā)和監(jiān)聽來實現(xiàn)組件之間的通信和參數(shù)傳遞。

首先需要在任意地方添加一個bus.js

在bus.js里面 寫入下面信息

import Vue from 'vue'

export default new Vue;

在需要通信的組件都引入Bus.js

如果你的bus.js是自定義一個bus的文件那from后面就改成你的所放的位置

import Bus from './bus.js'

接下來就是要組件通信了

添加一個 觸發(fā) #emit的事件按鈕

<template>
  <div id="emit">
    <button @click="bus">按鈕</button>
  </div>
 </template> 

import Bus from './bus.js' 
export default { 
  data() {
    return {
      message: ''"
    }
   },
  methods: {
    bus () {
     Bus.$emit('msg', '我要傳給兄弟組件們,你收到?jīng)]有')
    }
  }
}

打開要和$emit通信的另外一個組件 添加

在鉤子函數(shù)中監(jiān)聽msg事件

<template>
  <div id="on">
      <p>{{message}}</p>
  </div>
</template>

import Bus from './bus.js'
export default {
  data() {
   return {
    message: ''
   }
  },
  mounted() {
    let self = this
    Bus.$on('msg', (e) => {
     self.message = e
     console.log(`傳來的數(shù)據(jù)是:${e}`)
    })
   }
  }

最后p會顯示來自$emit傳來的信息

以上這篇vue 組件之間事件觸發(fā)($emit)與event Bus($on)的用法說明就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • vue實現(xiàn)新聞展示頁的步驟詳解

    vue實現(xiàn)新聞展示頁的步驟詳解

    最近小編遇到這樣的需求,要實現(xiàn)一個新聞展示頁功能,剛接到這樣的需求還真是一頭霧水,不知從哪入手,今天小編通過實例代碼給大家介紹下vue實現(xiàn)新聞展示頁的步驟詳解,感興趣的朋友跟隨小編一起看看吧
    2019-04-04
  • vue中使用unity3D如何實現(xiàn)webGL將要呈現(xiàn)的效果

    vue中使用unity3D如何實現(xiàn)webGL將要呈現(xiàn)的效果

    這篇文章主要介紹了vue中使用unity3D如何實現(xiàn)webGL將要呈現(xiàn)的效果,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue2.0與vue3.0及vue與react的區(qū)別及說明

    vue2.0與vue3.0及vue與react的區(qū)別及說明

    這篇文章主要介紹了vue2.0與vue3.0及vue與react的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue electron前端開啟局域網(wǎng)接口實現(xiàn)流程詳細介紹

    Vue electron前端開啟局域網(wǎng)接口實現(xiàn)流程詳細介紹

    用electron寫了一個自己用的小軟件,無后端,純本地的數(shù)據(jù)。最近想著開發(fā)一個手機端app,將PC端的數(shù)據(jù)進行同步。為了這小小的功能單獨寫個后端又麻煩。干脆前后端不分離哈哈,直接在前端軟件中開啟接口
    2022-10-10
  • Vue使用Canvas生成隨機大小且不重疊圓

    Vue使用Canvas生成隨機大小且不重疊圓

    Canvas是HTML5中新增的元素,專門用來繪制圖形,下面這篇文章主要給大家介紹了關于Vue使用Canvas生成隨機大小且不重疊圓的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-11-11
  • vue ajax 攔截原理與實現(xiàn)方法示例

    vue ajax 攔截原理與實現(xiàn)方法示例

    這篇文章主要介紹了vue ajax 攔截原理與實現(xiàn)方法,結合實例形式分析了vue.js基于ajax攔截實現(xiàn)無刷新登錄的相關原理與操作技巧,需要的朋友可以參考下
    2019-11-11
  • Ant Design Vue table組件如何自定義分頁器

    Ant Design Vue table組件如何自定義分頁器

    這篇文章主要介紹了Ant Design Vue table組件如何自定義分頁器問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vue引入element-ui之后,頁面是空白的問題及解決

    vue引入element-ui之后,頁面是空白的問題及解決

    這篇文章主要介紹了vue引入element-ui之后,頁面是空白的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Vue3?全局實例上掛載屬性方法案例講解

    Vue3?全局實例上掛載屬性方法案例講解

    這篇文章主要介紹了Vue3?全局實例上掛載屬性方法,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • vue element-ui v-for循環(huán)el-upload上傳圖片 動態(tài)添加、刪除方式

    vue element-ui v-for循環(huán)el-upload上傳圖片 動態(tài)添加、刪除方式

    這篇文章主要介紹了vue element-ui v-for循環(huán)el-upload上傳圖片 動態(tài)添加、刪除方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評論