2014-02-05 8 views
1

저는 사용자가 다양한 프로필 정보를 업데이트 할 수있게 해주는 Durandal 앱을 보유하고 있습니다. 데이터의 일부 비트의 경우 사용자는 변경 사항을 저장하려고 함을 나타 내기 위해 "저장"을 클릭해야합니다.경로 탐색을 가로 채고 사용자에게 "이 페이지를 종료 하시겠습니까?"라고 묻습니다.

사용자가 저장되지 않은 변경 사항으로 현재보기에서 벗어나려고하면 "저장하지 않은 변경 사항이 있습니다.이보기를 종료하기 전에 저장 하시겠습니까?"라는 모달이 탐색 및 팝업됩니다. ? "

그러나 Durandal Router plugin documentation을 검토하면서 내 viewmodel에서 탐색 요청을 차단하는 방법을 결정할 수 없었습니다. 나는 the router:route:activating event을 듣고 싶다. 하지만 :

  1. 나는 이걸위한 리스너를 어떻게 설정해야할지 모르겠다.
  2. 내 이벤트 처리기에서 내비게이션을 취소하여 내 모달을 대신 표시하는 방법을 모르겠습니다.
+0

임의의 링크 클릭 또는 다른 UA 탐색과 관련하여 URL을 변경하는 경우 브라우저 이벤트를 직접 처리하십시오. 재고 Durandal 라우터는 "탐색 전에"동작을 포함하지 않습니다. – user2864740

+0

사용자 관점에서 보면 웹 사이트가 만들 수있는 가장 성가신 일입니다. 죄송합니다. –

답변

0

VM에 canDeactivate 메서드를 추가하기 만하면됩니다. 시작 키트 예제에서 flickr.js을 보면 거의 원하는대로 수행됩니다.

2

durandal에있는 canDeactivate 이벤트에서이 작업을 수행 할 수 있습니다.

사용자의 선택한 옵션에 따라 탐색이 취소됩니다.