Обработка событий в Vue.js

#javascript #vuejs2 #event-handling #vue-component #event-listener

Вопрос:

У меня есть ситуация, когда событие, запущенное из родительского компонента, прослушивается несколькими дочерними компонентами.

 e.g. Parent Component: emit -gt; "orderReceived" Child Component1( Tab1): on-gt; "orderReceived" -gt; fetch array1 from server Child Component2( Tab2): on-gt; "orderReceived" -gt; fetch array2 from server  

когда обе эти вкладки открыты, все работает нормально. С чем я борюсь, так это с уничтожением прослушивателей событий на вкладке 1 и сохранением возможности прослушивания на вкладке 2. ( когда вкладка 1 закрыта). Прямо сейчас, если прослушиватели вкладки 1 будут уничтожены, это также отключит прослушиватели на вкладке 2.

Заранее спасибо.

Ответ №1:

Событие должно быть удалено из компонента, который прослушивал не оба , вам нужно использовать $off , чтобы просто удалить выбранное событие, а не все события только из определенного компонента, а не для обоих

 const ChildComponent1 = {  methods:{  orderReceived(){  //orderReceived event emit  }  },  created(){  EventBus.$on('YOURCONTENT', this.orderReceived)  },  beforeDestroy(){  EventBus.$off('YOURCONTENT', this.orderReceived)  } }