AngularJS를 사용하여
라우팅(Route)을 사용하는 경우 이와 관련된 다양한 이벤트를 제어 및 동작할 수 있습니다. 아래는
route 시작, 업데이트 등등의 관련 이벤트를 자세히 알아보도록 하겠습니다.
# Route 라우팅 관련 이벤트 알아보기
먼저 route에 사용할 수 있는 이벤트로 아래와 같이 4가지가 존재합니다. 각각 조금씩 다른 동작의 이벤트를 구현합니다.
i. $routeChangeStart
라우트 바뀌기 이전에 이벤트가 발생
ii. $routeChangeSuccess
라우트가 성공적으로 변경 후 이벤트 발생
iii. $routeChangeError
라우트가 변경하지 않는 에러 발생시 발생
iv. $routeUpdate
라우트가 업데이트 되는 시점에 이벤트 발생
# route 이벤트 동작 예제보기
아래 예제를 봐주세요. 가장 보편적인 $routeChangeStart를 사용한 이벤트입니다. route가 시작되면 이벤트가 동작합니다. 여기서는 Route Change Starting !!이라는 문구를 출력합니다.
$rootScope.$on('$routeChangeStart', function() {
alert('Route Change Starting !!')
});
위 예제와 같이 간단하게 만들어 보았습니다. 그럼 이런 이벤트는 언제필요할까요?
# Route 이벤트를 사용하는 경우는?
다양한 경우가 있겠지만 아래와 같은 경우에 많이 사용됩니다.
- Route 변경시 기존에 pending되어 있는 이벤트를 제거하기
- 3rd Party Library 제거 및 AngularJS 이외의 이벤트 바인딩을 제거하기
특히
SPA(Single Page Application)에서 AngularJS를 사용하지 않고 엘리먼트에 이벤트를 바인딩하면
메모리 누수(Memory Leaking)이 발생할 수 있어 이런 코드를 추가해두는 것 역시 좋은 방법 중 하나입니다.