vue.js 未捕获的类型错误:this.$emit 不是一个函数
2020-01-04
4117
export default {
mounted() {
setTimeout(function() {
this.$emit('onLoad')
}, 4000);
}
} //views/Load.vue
我想在访问页面4秒后跳转到另一个页面。
<template>
<div id="app">
<transition name="fade" mode="out-in">
<router-view
@onLoad="changeRoute('login')">
</router-view>
</transition>
</div>
</template>
<script>
export default {
name: 'app',
methods: {
changeRoute (routeName) {
this.$router.push({ name: routeName })
}
}
}
</script> //App.vue
我想通过'$emit'向'App.vue'发送信号,然后跳转到通过路由器连接的页面。
所有路由器都连接正常。
但是出现“Uncaught TypeError: this.$emit is not a function”的错误。
我该怎么办?
1个回答
问题似乎在于
setTimeout
中的函数未绑定到上下文,因此您可以尝试使用箭头函数或
绑定
该函数到外部上下文:
export default {
mounted() {
setTimeout(() => {
this.$emit('onLoad')
}, 4000);
}
}
karliatto
2020-01-04