javascript - vue.js 未捕获类型错误 : this. $emit 不是函数

标签 javascript vue.js vue-component

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”的错误。

我该怎么办?

最佳答案

看起来问题可能是 setTimeout 内的函数未绑定(bind)到上下文,因此您可以尝试使用箭头函数或 bind外部上下文的函数:

export default {    
    mounted() {
      setTimeout(() => {
        this.$emit('onLoad')
      }, 4000);
    }
}

关于javascript - vue.js 未捕获类型错误 : this. $emit 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59589821/

相关文章:

javascript - 单击链接并重定向时如何添加事件类?

javascript - DataTables - _fnAjaxDataSrc - 无法读取未定义的属性 'length'

javascript - 如何检查输入框是否有相同的值

javascript - 根据选择下拉值向表单添加 x 个输入

javascript - 将变量传递给 vuejs 模块

javascript - 如何在组件中使用canvas和Vue?

javascript - jQuery 航点错误 : The sticky method does not exist

javascript - 如何从 Javascript 获取 Payeezy API 响应到 PHP 文件?

javascript - 使用 vue js 多选动态更改选项

javascript - Mapbox JS SDK 地理编码客户端未定义