Почему Vue global EventBus не работают в моем проекте - PullRequest
0 голосов
/ 15 октября 2019

Я использую vue js в laravel, мне нужно использовать шину глобальных событий. Я создал event-bus.js и импортирую его туда, где мне нужно его использовать;когда я нажимаю, генерируются события, но от слушателя не происходит никаких реакций. Я попробовал все, но это не работает. Пожалуйста, помогите мне, я работал в течение 3 дней

Я пытался создать eventBus в app.js, но это не помогло либо

Мой EditDiscountComponent

import { EventBus } from "../../../event-bus";

editDiscount () {
        const data = {
          discount_id: this.discountData.discount_id,
          status: this.discountData.status,
          type: this.discountData.type,
          percentage:this.discountData.percentage,
          amount:this.discountData.amount,
        };

        EventBus.$emit('update-discount', data);

         this.languages.forEach(lang => {
              if (lang.code && this.discountData[lang.code] !== undefined) {
                  data[lang.code] = this.discountData[lang.code];
              }
          });
        this.$store.dispatch(actions.EDIT_DISCOUNT, data)
          .then(res => {
            if (res && res.data.status) {

              // window.location.href = '/admin/discounts';

            } else {
              this.$store.commit(mutations.SET_SNACKBAR_SHOW, true);
              this.$store.commit(mutations.SET_SNACKBAR_TEXT, res.data.message);
            }
          }).catch(console.error);

      },
    },

My ProductCOmponent


import { EventBus } from "../../../event-bus";

 mounted() {
            EventBus.$on('update-discount', ($data) => {
                console.log($data);
            });
            this.getCategories();
            this.getProducts();
        },

Я пробовал обратный вызов функции, используя другой метод, но безрезультатно, и я пробовал этот слушатель в mount (), и это не помогло

1 Ответ

0 голосов
/ 15 октября 2019

Вы можете создать файл eventBus.js в папке src вашего проекта, который будет выглядеть примерно так

import Vue from 'vue'
export default new Vue()

и попытаться импортировать его, как показано ниже:

import EventBus from '@/eventBus'

Или это может вам помочь https://alligator.io/vuejs/global-event-bus/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...