2013-10-13 6 views
2

내 응용 프로그램의 일부 경로는 게임이며 사용자가 러닝 게임을 종료하려고 할 때 확인 프로세스를 구현하려고합니다.Meteor iron-router : 경로 취소

라우터를 "중지"할 수있는 방법이 있습니까? 이 evrything을 파괴

Router.configure({ 

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

니어 :

나는 것을 시도했다.

아이디어가 있으십니까?

답변

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

작동하지만 이것은'{{link-to}} '도우미를 사용할 수 없음을 의미합니다. 철 - 라우터의 기본 좋은 유틸리티 중 하나입니다 – fabien

+0

좋은 지적. 위의 코드를 업데이트하여 url 메서드를 사용했습니다.이 메서드는 전달 된 URL로 이동 한 것처럼 보입니다. 또는 그것을 제거하고 if 문 안에'e.preventDefault()'를 넣을 수 있습니다. (확실하지 않은 offhand) – 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'); 
      } 
     } 
    } 
} 
관련 문제