2013-04-22 2 views
2

앱 상태가 지저분한 경우 뒤로 버튼을 처리하고 사용자에게 확인을 요청하는 중입니다. 닫는 탭과 다시로드는 이미 onbeforeunload 후크를 통해 처리됩니다.AngularJS의 경로 변경 처리

나는 $routeChangeStart, $beforeRouteChange 등과 놀았지만 제대로 처리하지 못했습니다. $routeChangeStart으로, 콜백이 호출되기 전에 경로가 효과적으로 변경됩니다.

이 상황을 처리하는 올바른 방법은 무엇입니까?

도움 주셔서 감사합니다.

답변

6

$ locationChangeStart는 내가 원할 때 실행됩니다.

+1

이 이벤트는 좋은 이벤트입니다. 불행하게도, 뒤로 ​​버튼으로 트리거되지 않은 버그가 있습니다.이 버그는 방금 각도로 고정되었습니다. https://github.com/angular/angular.js/pull/2206 –

2

당신은 사용할 수 있습니다

$scope.$on('$routeChangeStart', function(next, current) { 
    //broadcasted before a route change 
    // do something here 
}); 

가 그것을 더보기 : $route

+0

사과드립니다. 이미 $ routeChangeStart를 사용하고 있습니다 만, 처리하기 전에 내 경로가 효과적으로 변경됩니다 (URL 표시 줄에서). –

+0

나는 오해가 있었다고 생각한다. * 라우팅 엔진이 응답하고 있기 때문에 URL 표시 줄이 변경되었습니다. 물론 그것은 이미 바뀌었다! 어떻게 다른 경로를 알 수 있을까요? :-)하지만 여전히'$ routeChangeStart'가하는 경로를 처리하지 않을 수있는 옵션이 있습니다. 나는 이것이 최선의 접근이라고 생각한다. –

1

을 모든보기에, 부모 컨트롤러에서 흔히 더러운 상태의 모델을 유지? 어떤보기의 컨트롤러에서 더티 상태가 감지되면 $ location.path (...)를 더티 페이지로 재설정하는 "취소"버튼과 함께 경고/확인 메시지가 나타납니다.

관련 문제