流星铁路由器:取消路由

时间:2013-10-13 10:44:30

标签: javascript meteor router

我的应用程序中的一些路线是游戏,我想在用户即将离开游戏时实施确认过程。

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

我试过了:

Router.configure({

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

它摧毁了evrything。

有什么想法吗?

2 个答案:

答案 0 :(得分: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);
    }     

  }
});

答案 1 :(得分: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');
           }
        }
    }
}