vue Bus 總線 組件間通信

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

有時候兩個組件也需要通信(非父子關系)。當然Vue2.0提供了Vuex,但在簡單的場景下,可以使用一個空的Vue實例作為中央事件總線。

<div id="app"><c1></c1><c2></c2>
</div>
var Bus = new Vue(); //為了方便將Bus(空vue)定義在一個組件中,在實際的運用中一般會新建一Bus.js
Vue.component('c1',{ //這里已全局組件為例,同樣,單文件組件和局部組件也同樣適用
template:'<div>{{msg}}</div>',data: () => ({msg: 'Hello World!'}),created() {Bus.$on('setMsg', content => { this.msg = content;});}
});
Vue.component('c2',{template: '<button @click="sendEvent">Say Hi</button>',methods: {sendEvent() {Bus.$emit('setMsg', 'Hi Vue!');}}
});
var app= new Vue({el:'#app'
})

在實際運用中,一般將Bus抽離出來:

Bus.js

import Vue from 'vue'
const Bus = new Vue()
export default Bus
組件調用時先引入

組件1

import Bus from './Bus'export default {data() {return {.........}},methods: {....Bus.$emit('log', 120)},} 

?

組件2

import Bus from './Bus'export default {data() {return {.........}},mounted () {Bus.$on('log', content => { console.log(content)});    }    
} 

但這種引入方式,經過webpack打包后可能會出現Bus局部作用域的情況,即引用的是兩個不同的Bus,導致不能正常通信

?實際運用二(推薦):

當然也可以直接將Bus注入到Vue根對象中,

import Vue from 'vue'
const Bus = new Vue()var app= new Vue({el:'#app',data:{Bus}  })

在子組件中通過this.$root.Bus.$on(),this.$root.Bus.$emit()來調用

?

轉自:https://www.cnblogs.com/fanlinqiang/p/7756566.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448106.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448106.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448106.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++沒有調用析構函數

github地址 在項目中遇到一個問題&#xff0c;析構函數沒有調用產生了內存泄露。 具體見valgrind檢測libevent內存泄露 我們看兩個例子 demo1 class Test1; void del(Test1* obj){delete obj; } class Test1{ public:Test1(){printf("Test1\r\n");}~Test1(){pri…

實際操作之路考的這些事

辛苦了這么久練習路考&#xff0c;今天終于實際操作到我路考了。上車以后。關上車門。把考試的單地上給考官。還沒有認真的去看考官一眼。于是就聽到考官用低沉的聲音對我說&#xff1a;你好&#xff01;當時就感覺有一點意外。沒想到考官你這么有禮貌。然后我就沒那么緊張了&a…

[C# 網絡編程系列]專題十二:實現一個簡單的FTP服務器

引言&#xff1a; 休息一個國慶節后好久沒有更新文章了&#xff0c;主要是剛開始休息完心態還沒有調整過來的&#xff0c; 現在差不多進入狀態了&#xff0c; 所以繼續和大家分享下網絡編程的知識&#xff0c;在本專題中將和大家分享如何自己實現一個簡單的FTP服務器。在我們平…

vue 2 使用 Bus.js 實現兄弟 (非父子) 組件通信 簡單案例

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 vue2中廢棄了$dispatch和$broadcast廣播和分發事件的方法。父子組件中可以用props和$emit()。如何實現非父子組件間的通信&#xff0c;可…

jenkins自動化部署

jenkins自動化部署 github地址 首先設置源碼地址&#xff0c;jenkins會從倉庫中拉取最新代碼 拉取代碼后運行shell腳本自動進行編譯 cd mediaService cmake -S . -B cmake-build-release-hisi3531 -DCMAKE_C_COMPILER/opt/hisi-linux/x86-arm/arm-hisiv500-linux/target/bin…

JS-[IIFE閉包]

JS-IIFE&閉包 IIFE(立即調用函數表達式)示例IIFE實現單例模式閉包計數器例子非閉包實現閉包實現IIFE閉包實現內存泄露解決IIFE(立即調用函數表達式) 示例 (function iife(){ //直接執行&#xff0c;無需調用console.log("hello"); })(); //上面相當于function ii…

學開車不能急于求成,心急上路

我發現很多人開始學開車以后就急著要上路&#xff0c;覺得開車是很簡單的事情&#xff0c;個人覺得開車雖然不難&#xff08;相對于會開車的人來說&#xff09;&#xff0c;但是&#xff0c;雖然不是很難&#xff0c;也不是一學會開車起步就能上路去瀟灑的。急于求成的人很容易…

vue 組件間傳值、兄弟組件 、bus方式 ( 1 分鐘看懂 )

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 bus方式的組件間傳值其實就是建立一個公共的js文件&#xff0c;專門用來傳遞消息 1.建立公共文件&#xff0c;并引入 新建msgBus.js文件…

valgrind檢測libevent內存泄露

valgrind檢測libevent內存泄露 github地址 在使用封裝好的http庫時&#xff0c;遇到了如下的內存泄露&#xff0c;一開始在definitely處還存在泄露&#xff0c;這里就不貼圖了&#xff0c;已經被淹沒了。 根據提示定位出錯代碼位置&#xff0c;如下圖&#xff1a; 這里提示ev…

往對象數組里面添加相同的key 不同的value

應用場景&#xff1a;后盾字段沒有發給你 自己補充數據 <div v-for"item in list" :key"item.id"><p>{{ item.id}} ----> {{ item.name}} --->{{ item.sex }}---> {{ item.tel }}---->{{ item.link}}--插入數據</p></di…

vue 子組件 調用、觸發父組件中的方法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 我發現了兩種寫法。 方法一&#xff1a; 子組件&#xff1a; <template><button click"submit">提交</but…

新手必看一位老司機的十年開車經驗

今天&#xff0c;小編為大家收集整理了一個老司機的十年開車經驗&#xff0c;新手們一定要學哦&#xff0c;因為這種寶貴的開車經驗是我們以后開車過程中每天都要用到的常識。將來無論在什么時候&#xff0c;這種寶貴經驗都會給我們帶來更安全的行車時光。新手必看的十年開車經…

Protobuf使用

Protobuf使用 github地址 目錄 proto3的更新定義協議格式編譯protobufprotobuf_API 枚舉和嵌套類標準消息方法解析和序列化 寫一條消息閱讀消息編譯Protobuf擴展優化高級用法 proto3的更新 在第一行非空白非注釋行&#xff0c;必須寫&#xff1a; syntax "proto3&…

大佬(概率期望DP)

首先根據數據范圍&#xff0c;可以判斷基本上是n^2的復雜度 通過分析我們發現每一次都可以從m個數中任意選&#xff0c;既然任意選&#xff0c;那么此時的概率的分母就是不變的&#xff0c;然而題中涉及的是某一段的最大值&#xff0c;所以我們按套路假設 f[i][j]表示第i天&…

vue 父組件 調用 子組件的方法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 我們都知道通過$ref可以獲取到某個DOM&#xff0c;但是它也可以用來獲取子組件的實例&#xff0c;調用子組件的方法 例&#xff1a; 子…

新手開車13招技巧

開車是一個靠經驗積累技術的過程&#xff0c;新手們往往會在開車時遇到很多問題&#xff0c;我們用本篇文章和新手講述開車的各種技巧&#xff0c;希望每個新手都能從中受益。第1招技巧&#xff1a;上車前要先看車  上車前繞車轉一圈&#xff0c;看車的外況、輪胎、車底下有沒…

高效的數據壓縮編碼方式 Protobuf

高效的數據壓縮編碼方式 Protobuf github地址 目錄 ProtocolBuffers 是什么為什么要發明 ProtocolBuffersproto3 定義 Message 分配字段編號保留字段默認字段規則各個語言標量類型對應關系枚舉枚舉中的保留值允許嵌套枚舉不兼容性更新 Message未知字段Map 類型JsonMapping p…

解決 VUE前端項目報錯:RangeError: Maximum call stack size exceeded

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 我點擊菜單按鈕報錯&#xff1a; RangeError: Maximum call stack size exceeded 2. 原因&#xff1a;參數傳遞有問題或者方法調用有…

新手必須掌握的學車技巧-上坡起步

我們知道&#xff0c;做什么事情都是萬事開頭難&#xff0c;新手們在學車方面更能體會到這一點&#xff0c;正確掌握學車技巧對于新手來說是非常重要的事情&#xff0c;今天&#xff0c;平安學車網&#xff08;www.paxcw.com&#xff09;就會大家探討一下我們學車時必須掌握的是…

高效的序列化/反序列化數據方式 Protobuf

高效的序列化/反序列化數據方式 Protobuf github地址 目錄 protocolBuffers 序列化 Int32StringMapslice序列化小結 protocolBuffers 反序列化 Int32StringMapslice序列化小結 序列化/反序列化性能最后 protocolBuffers序列化 上篇文章中其實已經講過了 encode 的過程&…