当另一个组件发生更改时,我想重新加载其中一个组件(例如我使用 axios 发送 put)
我尝试使用 eventbus 但出现此错误:
handler.apply is not a function
在我想要触发的组件中:
EventBus.$emit('compose-reload', Math.random()*100);
我想在哪里触发:
<template>
<div class="">
<div class="">
<div class="columns">
<div class="column is-one-fifth">
<div class="box">
<Menu></Menu>
</div>
</div>
<div class="column is-four-fifth">
<div class="box">
<router-view :key="key"></router-view>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import Menu from './includes/Menu'
import EventBus from '../../../event-bus';
export default {
components: {
Menu,
},
data() {
return {
key: null
}
},
mounted(){
EventBus.$on('compose-reload', this.key);
},
created(){
this.key = Math.random()*100
}
}
</script>
最佳答案
EventBus.$on
期望处理函数作为第二个参数,但传入了变量 this.key
,因此出现错误。
你应该改变这个:
mounted(){
EventBus.$on('compose-reload', this.key);
}
对此:
mounted(){
EventBus.$on('compose-reload', key => {
this.key = key;
});
}
关于vue.js - Vue Eventbus : handler. apply 不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58363201/