Попытка захвата событий на vue.js 2, но безуспешно - PullRequest
0 голосов
/ 05 июля 2018

У меня проблема с захватом событий с помощью vue.js 2. Я использую шину событий для генерации и захвата события.

В этом блоке кода я написал функцию, которая будет генерировать событие:

getLevelItems(parent) {
    this.$bus.$emit('get-level-items',{level: 'third', parent: parent})
},

В этом другом блоке я фиксирую событие:

mounted() {
      this.$bus.$on('get-level-items', (obj) => {
        if (obj.level === 'third' && obj.parent === this.parent) {
          if (this.itemsNotFilled){
            this.getAllCategories(this.parent)
          }
        }
      })
    },

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

prepareData(data) {
        _.forEach(data, (value) => {
          value.selected = this.categories.includes(value._id) ? true : false
          value.show = this.categories.includes(value._id) ? true : false
          if (value.show){
            this.getLevelItems(value._id)
          }    
        })
        return data
      },

Eventbus.js

import Vue from 'vue'

const bus = new Vue()

export { bus }

export default function install (Vue) {
  Object.defineProperty(Vue.prototype, '$bus', {
    get () {
      return bus
    }
  })
}

1 Ответ

0 голосов
/ 05 июля 2018

Попробуйте использовать nextTick:

`mounted() { 
    this.$nextTick(function () {
        this.$bus.$on('get-level-items', (obj) => {
            if (obj.level === 'third' && obj.parent === this.parent) {
                if (this.itemsNotFilled) {
                    this.getAllCategories(this.parent)
                }
            }
         })
      })
  }`
...