2

我的应用程序中的某些路由是游戏,我想在用户即将离开正在运行的游戏时实现确认过程。

有没有办法“停止”路由器?

我试过了:

Router.configure({

    onBeforeRun: function() {
        Router.stop();
    }
});

但它摧毁了一切。

任何想法 ?

4

2 回答 2

2

你能用这样的东西吗?(我自己还没有使用 Iron-Router)
基本上只是捕捉链接点击事件,并抛出一个确认对话框。如果他们单击是,它将运行触发路由更改的路由器的 go 方法,否则单击将被忽略

编辑更新代码以使用原始 href 值代替

Meteor.templateName.events({
  'click .someLink': function(e) {
    e.preventDefault();

    if (game.isRunning && confirm('are you sure you want to leave?') ) {
      // Router.go('routeName');  // edit, see comment below
      Router.url(e.target.href);
    }     

  }
});
于 2013-10-14T03:50:24.367 回答
1

这是一个旧帖子,但刚刚解决了它。这是我的解决方案:

Router.route('/myPath', {
    unload: function (e, obj) {
        if(Session.get("hasChanged")){
            if (confirm("Are you sure you want to navigate away ?")) {
                // Go and do some action
            }else{
                // Redirect to itself : nothing happend
                this.redirect('/myPath');
           }
        }
    }
}
于 2016-05-04T14:56:33.887 回答