vue中eventbus被多次觸發(vue中使用eventbus踩過的坑)【bus.$on事件被多次繫結】
阿新 • • 發佈:2018-12-15
問題描述:只要頁面沒有強制重新整理,存在元件切換,bus.$on方法會被多次繫結,造成事件多次觸發
觸發bus.$on中繫結的方法.png bus.$on多次繫結.png解決辦法:在每次呼叫方法前先解綁事件( bus.$off ),然後在重新繫結( bus.$on )
bus.$off("backUpLevel");
bus.$on('backUpLevel', () => {
if(self.ONION.length <= 1){ self.jumpSubDir() }else{ let len = self.ONION.length-1 self.jumpTeamId(self.ONION[len].id,self.ONION[len].name,self.ONION[len].type) } })
每次繫結前解綁bus.$on方法.png
解決:
看一下github上提出的。issue
https://github.com/vuejs/vue/issues/3399
尤大大提出了以下解決:
image.png*就是說,這個$on事件是不會自動清楚銷燬的,需要我們手動來銷燬。
所以。我在B元件頁面中新增Bus.$off來關閉。程式碼如下:
// 在B元件頁面中新增以下語句,在元件beforeDestory的時候銷燬。
beforeDestroy () {
bus.$off('get', this.myhandle)
},