vue之bus總線簡單使用講解
vue之bus總線的簡單使用
場景描述:
A組件中包括B,C組件,而B組件中包括D組件,這時如果D組件想要在A組件中觸發(fā)C組件的方法怎么辦呢?
當然方案是有的,用狀態(tài)管理vuex可以,用$emit傳遞也可以,但是我想試著用的是bus總線的方式;
如下:
D組件中觸發(fā)bus的emit ,然后在A組件中用bus總線的on來觸發(fā)方法;
D組件中
dataLoad(){
console.log('加載完觸發(fā)事件');
this.$bus.$emit('itemDataLoad')
// this.$bus.$emit('事件名稱', 參數(shù)) // 第二個可以為參數(shù)
},
A組件中
mounted() {
// 監(jiān)聽item中數(shù)據(jù)加載完
this.$bus.$on('itemDataLoad', () => {
console.log('數(shù)據(jù)加載完');
})
// this.$bus.$on('事件名稱', 回調(diào)函數(shù)(參數(shù)))
},
當然在A組件中通過 this.$refs 的方式就可以觸發(fā)C組件中的事件等
還有一步驟是 $bus 默認是不存在的啊,打印試試this.$bus為undefined?。?/p>
別急,在main.js中加上$bus;
// bus總線 vue實例 Vue.prototype.$bus = new Vue()
當然可以在生命周期中移除bus總線;
this.$bus.$off();
記錄封裝的防抖函數(shù)
// 防抖函數(shù)
debounce: function (fun, delay) {
let timer = null
// 接收調(diào)用函數(shù)時傳入的參數(shù)的值 ...args 可多個
return function (...args) {
if (tiemr) return
timer = setTimeout(() => {
fun.apply(this, args)
}, delay);
}
}
const refresh = debounce(xxx, 500)
refresh('參數(shù)1', '參數(shù)2', '參數(shù)3')
到此這篇關(guān)于vue之bus總線簡單使用講解的文章就介紹到這了,更多相關(guān)vue之bus總線簡單使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Elementui中toggleRowSelection()方法實現(xiàn)分頁切換時記錄之前選中的狀態(tài)
這篇文章主要介紹了關(guān)于Elementui中toggleRowSelection()方法實現(xiàn)分頁切換時記錄之前選中的狀態(tài),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
vue+element-ui實現(xiàn)表格編輯的三種實現(xiàn)方式
這篇文章主要介紹了vue+element-ui實現(xiàn)表格編輯的三種實現(xiàn)方式,主要有表格內(nèi)部顯示和編輯切換,通過彈出另外一個表格編輯和直接通過樣式控制三種方式,感興趣的小伙伴們可以參考一下2018-10-10
Vue無法讀取HTMLCollection列表的length問題解決
這篇文章主要介紹了Vue無法讀取HTMLCollection列表的length問題解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03

