javascript - 如何异步等待子组件中的事件? Vue-路由器

标签 javascript vue.js async-await vue-router

我想保护用户避免使用自定义模式和 vue-router 离开未保存的表单。

这可以通过 native 浏览器警报框实现

beforeRouteLeave (to, from, next) {
  const answer = window.confirm('Do you really want to leave? you have unsaved changes!') 
    if (answer) {
      next();
    } else { 
      next(false);
    }
}

但是我如何等待来自自定义子模态组件的事件?

async beforeRouteLeave(to, from, next) {
    const a = await this.showModal();

    if (a) {
      next();
    } else {
      next(false);
    }
}

最佳答案

beforeRouteLeave 无法识别 Promise,async 函数返回的 Promise 会被忽略。

next 是 JavaScript 生态系统中回调的常用名称。如the documentation显示,它接受一个参数。应该是:

async beforeRouteLeave(to, from, next) {
    const a = await this.showModal();

    if (a)
      next(); 
    else
      next(false); 
}

关于javascript - 如何异步等待子组件中的事件? Vue-路由器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58121817/

相关文章:

javascript - React - 触发子组件的getter方法

javascript - 为什么 Vue 使用它是 “in-place patch” ,尽管我在 v-for 循环中绑定(bind)了一个键?

javascript - 如何将从地理位置获取的城市名称存储到变量并发送 ajax 请求?

javascript - 如何运行函数,当用户没有在特定时间 JS 进行输入时

c# - 在简单的自定义同步上下文中,异步、等待的线程峰值数量

c# - 让任务在控制台应用程序的后台永久运行

javascript - Ember.js:如何将我的组件与模型关联?

javascript - ng 类表达式 : merge condition and class name

javascript - 我可以使用 JavaScript 重置媒体权限吗?

javascript - Vuejs - 检查图像 url 是否有效或损坏