2015-01-08 2 views
5

폼 페이지가 있으며 폼을 저장하지 않고 떠나는 경우 사용자에게 경고하고 싶습니다. 일반적으로이 함수는 window.onBeforeUnload 함수를 사용하여이 목적을 달성 할 수 있습니다.유성 철제 라우터에서 다른 페이지로 이동하는 것을 방지하는 방법

window.onBeforeUnload = function(){return 'Please save the form before navigating';} 

하지만 Meteor와 Iron Router를 사용하는 프로젝트에서는 작동하지 않는 것 같습니다. 제안 사항이 있으십니까?

+1

"다른 페이지"= "다른 웹 사이트의 경로"또는 "다른 웹 사이트의 페이지"입니까? –

+0

어디'''window.onBeforeUnload = function() {return '네비게이션 전에 양식을 저장하십시오';}'''? – MurWade

+0

@ PeppeL-G 다른 페이지는 내 웹 사이트의 또 다른 경로입니다. – aladine

답변

1

이 어쩌면 해키 버전이지만, 그것은 작동합니다

isUnsaved = -> 
    return unless @ready() 
    unless confirm 'Do you really want to leave the page?' 
    Router.go(@url) 

Router.onStop isUnsaved, 
    only: [ 
    'editPost' 
    ] 
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'); 
      } 
     } 
    } 
} 
관련 문제