试图捕获vue.js 2上的事件,但未成功
我在使用vue.js 2捕获事件时遇到问题。我正在使用事件总线来发出和捕获事件 在这段代码中,我编写了将发出事件的函数:试图捕获vue.js 2上的事件,但未成功,vue.js,vuejs2,event-bus,Vue.js,Vuejs2,Event Bus,我在使用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 ==
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)
}
}
})
},
在另一个块中,我捕获事件:
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
}
})
}
尝试使用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)
}
}
})
})
}`
从代码的读取方式来看,您似乎将
总线作为插件连接到了Vue实例。是吗?是的,我将总线作为插件连接。请同时提供该代码,而不是使用事件总线,使用vuex
可能更容易。是的,我m将vuex用于其他事情,但我认为它没有必要,因为它太简单了。。。而且应该工作。