最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

新增按鈕組件:

操作按鈕組合組件:

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

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

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

$emit的使用方法如下:

在子組件中,寫一個(gè)click點(diǎn)擊事件。比如:

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

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

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

具體使用方法如下:

第一步:

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

內(nèi)容如下:

import Vue from 'vue';

export default new Vue();

第二步:

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

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

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

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

這里我們?cè)赾lick組件中每次點(diǎn)擊,都會(huì)在bus中觸發(fā)這個(gè)名為'getTarget'的事件,并將點(diǎn)擊事件的event.target順著事件傳遞出去。

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

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

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

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

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

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

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

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

import Vue from 'vue'

export default new Vue;

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

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

import Bus from './bus.js'

接下來就是要組件通信了

添加一個(gè) 觸發(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通信的另外一個(gè)組件 添加

在鉤子函數(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會(huì)顯示來自$emit傳來的信息

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

相關(guān)文章

  • 在Vue.js應(yīng)用中實(shí)現(xiàn)分布式搜索和全文搜索

    在Vue.js應(yīng)用中實(shí)現(xiàn)分布式搜索和全文搜索

    分布式搜索和全文搜索在現(xiàn)代應(yīng)用程序中變得越來越重要,因?yàn)樗鼈兛梢詭椭脩艨焖俨檎液蜋z索大量數(shù)據(jù),Elasticsearch是一種強(qiáng)大的分布式搜索引擎,本文將介紹如何在Vue.js應(yīng)用程序中實(shí)現(xiàn)分布式搜索和全文搜索,以及如何與Elasticsearch集成,需要的朋友可以參考下
    2023-11-11
  • 如何用webpack4帶你實(shí)現(xiàn)一個(gè)vue的打包的項(xiàng)目

    如何用webpack4帶你實(shí)現(xiàn)一個(gè)vue的打包的項(xiàng)目

    這篇文章主要介紹了如何用webpack4帶你實(shí)現(xiàn)一個(gè)vue的打包的項(xiàng)目,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • 基于vue實(shí)現(xiàn)多功能樹形結(jié)構(gòu)組件的示例代碼

    基于vue實(shí)現(xiàn)多功能樹形結(jié)構(gòu)組件的示例代碼

    一個(gè)優(yōu)雅展示樹形結(jié)構(gòu)數(shù)據(jù)的 Vue 組件,遞歸渲染每個(gè)節(jié)點(diǎn)及其子節(jié)點(diǎn),支持自定義顏色、文本和布局,通過獨(dú)特的樣式巧妙處理不同層級(jí),為用戶打造豐富的視覺盛宴,文中通過代碼給大家介紹的非常詳細(xì),感興趣的同學(xué)可以自己動(dòng)手嘗試一下
    2024-02-02
  • Vue 打包的靜態(tài)文件不能直接運(yùn)行的原因及解決辦法

    Vue 打包的靜態(tài)文件不能直接運(yùn)行的原因及解決辦法

    這篇文章主要介紹了Vue 打包的靜態(tài)文件不能直接運(yùn)行的原因及解決辦法,幫助大家更好的理解和學(xué)習(xí)vue框架,感興趣的朋友可以了解下
    2020-11-11
  • vue完成項(xiàng)目后,打包成靜態(tài)文件的方法

    vue完成項(xiàng)目后,打包成靜態(tài)文件的方法

    今天小編就為大家分享一篇vue完成項(xiàng)目后,打包成靜態(tài)文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue驗(yàn)證碼組件使用方法詳解

    vue驗(yàn)證碼組件使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了vue驗(yàn)證碼組件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 基于Vue.js 實(shí)現(xiàn)簡易拖拽指令

    基于Vue.js 實(shí)現(xiàn)簡易拖拽指令

    在 Vue.js 中,我們可以通過自定義指令的方式來實(shí)現(xiàn)拖拽功能,使得代碼更加模塊化和可復(fù)用,本文將介紹如何基于 Vue.js 實(shí)現(xiàn)一個(gè)簡易的拖拽指令,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • vue中實(shí)現(xiàn)回車鍵登錄功能

    vue中實(shí)現(xiàn)回車鍵登錄功能

    這篇文章主要介紹了vue中實(shí)現(xiàn)回車鍵登錄功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • vue3如何通過ref獲取元素離頂部的距離

    vue3如何通過ref獲取元素離頂部的距離

    這篇文章主要給大家介紹了關(guān)于vue3如何通過ref獲取元素離頂部的距離,文中通過代碼以及圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue3具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-10-10
  • vue中如何去掉空格的方法實(shí)現(xiàn)

    vue中如何去掉空格的方法實(shí)現(xiàn)

    這篇文章主要介紹了vue中如何去掉空格的方法實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11

最新評(píng)論

南召县| 南召县| 广饶县| 新泰市| 荥经县| 尉氏县| 莱西市| 汤阴县| 汽车| 德安县| 虎林市| 额尔古纳市| 福贡县| 新泰市| 英吉沙县| 丰台区| 安化县| 临潭县| 固始县| 娱乐| 绥化市| 钟祥市| 安义县| 商洛市| 定西市| 铅山县| 乃东县| 罗江县| 临城县| 延川县| 兴安盟| 呼和浩特市| 卢氏县| 江油市| 平阳县| 额尔古纳市| 石楼县| 桑植县| 长子县| 安宁市| 平泉县|