用流星铁路由器中止导航

 萌新求学 发布于 2023-01-08 06:32

我在Meteor应用程序中有一个(客户端)路由器,并使用{{pathFor}}帮助程序进行链接.

我在用户更改表单字段时设置了一个dirty标志Session,并且我想触发警告并允许用户在设置标志时停止从页面导航,基本上就像onunload处理程序一样.

我试过这样做:

Router.onBeforeAction(function(pause) {
    var self = this;

    if (!this.ready()) {
        return;
    }

    if(Session.get('dirty')) {
        if(!confirm("Are you sure you want to navigate away?")) {
            pause();
        }
    }
});

然而,当我得到提示时,我仍然被引导离开.也就是说,pause()似乎没有停止后续的路由器操作,无论它是什么.

我究竟做错了什么?

1 个回答
  • 据我所知,铁路由器API无法实现这一点.但你可以做的是覆盖Router.go方法,就像这样(在你的客户端代码中的某个地方):

    var go = Router.go; // cache the original Router.go method
    Router.go = function () {
      if(Session.get('dirty')) {
        if (confirm("Are you sure you want to navigate away?")) {
          go.apply(this, arguments);
        }
      } else {
        go.apply(this, arguments);
      }
    };
    

    2023-01-08 06:56 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有