2013-10-13 272 views
2

我的應用中的一些路由是遊戲,我想在用戶即將離開奔跑遊戲時執行確認過程。流星鐵路由器:取消路由

有沒有辦法「停止」路由器?

我試過:

Router.configure({ 

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

卜它破壞evrything。

有什麼想法?

回答

2

你能用這樣的東西嗎? (我還沒有使用Iron-Router)
基本上只是捕捉鏈接點擊事件,並拋出確認對話框。如果他們點擊是的,它會運行的觸發路由改變路由器的走法,否則點擊被忽略

編輯更新代碼,使用原來的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); 
    }  

    } 
}); 
+0

這將工作,但這意味着我不能使用'{{鏈接到}}助手;這是鐵路路由器 – fabien

+0

好點的基本好工具之一。我更新了上面的代碼以使用它們的url方法,它看起來像導航到您傳遞給它的url。或者,你也許可以去掉那個,只需在if語句中放置'e.preventDefault()'。 (不確定手寫) – SkinnyGeek1010

+0

哦,我看到了如何使用你的答案:)我編輯你的代碼一點點 – fabien

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'); 
      } 
     } 
    } 
}