(AngularJs) 컨트롤러의 정의

1. 다이제스트 주기
-> AngularJS는 뭔가가 변경되었다는 것을 어떻게 알아채고 제때 수정할 수 있을까?
이 동작은 더티체크라는 개념위에 구현된 것이다.


더티체크란, 단순히 현재 값을 이전 값과 비교하여 값이 변경되었으면 이벤트를 발생시킨는 과정을 말한다.

AngularJS는 $digest객체가 관리하는 다이제스트 주기를 통해 더티 체크를 수행한다.
$digest 객체는 암암리에 동작하기 때문에 이 객체를 직접 호출하는 일은 없다.
다이제스트 주기를 시작하려면 $apply객체를 사용하면 된다.
이 객체는 $digest객체를 호출하며 오류처리 메커지므을 함께 탑재하고 있다.


AngularJS는 컴파일 과정을 거치면서 $scope 객체에 정의된 모든 속성에 대해 감시(watch)표현식을 생성한다. 감시 표현식은 필요하다면 수동으로 생성할 수도 있지만, 컴파일 과정에서 생성되는 감시 표현식은 angular.equals메소드를 이용하여 속성값을 이전 값과 현재 값을 비교하는 간단한 함수다.


$digest 주기 동안 스코프 객체의 모든 감시 표현식이 실행된다. 감시 표현식을 통해 $scope객체의 속성이 변경된 것을 알게 되면 리스너 함수가 호출된다.

간혹 AngularJS가 속성값이 변경되었다는 사실을 알아내지 못하는 경우도 있다. 이런 경우에는 $apply 객체를 통해 다이제스트 주기를 직접 실행할 수 있다. 4
대부분 API 호출이나 서드 파티 라이브러리가 수행한 작업을 AngularJS에게 알리고자 할 때 이 기법을 활용한다.


댓글

이 블로그의 인기 게시물

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬

(18장) WebSocekt과 STOMP를 사용하여 메시징하기