AngularJS – $watch $digest $apply Life Cycle

■ 참조(구글번역) – AngularJS – $watch $digest $apply Life Cycle
http://excellencenodejsblog.com/angularjs-watch-digest-apply-life-cycle/
 
 
 

■ AngularJS의 중심에는 데이터 바인딩이 있습니다. 이 블로그 포스트에서는 AngularJS가 데이터바인딩을 구현하는 방법과 AngularJS $scope의 생명주기기 무엇인지를 살펴볼것입니다. 애플리케이션 성능을 위해 응용 프로그램을 최적화하려는 경우 이를 이해하는 것이 매우 중요합니다.
 
 
 

■ AngularJS Dirty Checking
Dirty Checking은 표현식/변수의 값이 변경되었는지 확인하는 매우 간단한 프로세스입니다. 기본적으로 오래된 값과 새로운 값을 비교하여 변경된 값을 확인합니다. AngularJS는 더티 검사를 사용하여 범위에있는 표현식 / 변수의 값이 변경되었는지 여부를 확인하고 변경된 경우 필요한 작업 (DOM 업데이트 등)을 수행합니다.
 
 
 

■ $watch
$watch는 dirty checking을 위한 angularjs의 메소드입니다. $scope에 할당된 변수나 표현식은 watchExpression을 angular에서 자동으로 설정합니다. 개발자가 직접 $watch를 구현할 수도 있습니다.

$scope.$watch('variable',function(newValue,oldValue){
...
});

따라서 $scope에 변수를 지정하거나 ng-if, ng-show, ng-repeat 등의 지시문을 사용하면 angular scope에서 watch가 자동으로 생성됩니다.
예 : $ scope.text = ”; 자동으로 angularjs에서 ‘text’에 대한 $watch를 만듭니다.
 
 
 

■ $digest
$ digest()는 angular 메소드로 내부에서 anglejs에 의해 빈번히 호출됩니다. $ digest 메소드에서, angular는 scope / child scoples 내의 전체 $ watch를 반복합니다. 변경 사항이 발견되면 결과 DOM 작업이 완료됩니다.
 
 
 

■ $apply
$apply()는 내부적으로 $digest를 호출하는 angular의 메소드입니다. 이 메소드는 수동으로 dirty checking을 할 필요가 있을때 사용됩니다(모든 $watch를 실행). $ apply를 사용할시기에 대한 자세한 내용은 여기를 참조하십시오.
 
 
 

■ $destroy
$ destory는 angularjs의 메소드와 이벤트입니다. $ destory() 메소드는 스코프와 모든 자식을 더티 검사에서 제거합니다. $destory 이벤트는 $scope 또는 $controller가 destroy될 때마다 angular에 의해 호출됩니다.

$scope.$on('$destory',function(){
   //do clean up here
});

$digest와 $ watch가 angularj에서 중요하다는 것을 알 수 있었습니다. watches와 성능에 대해 읽을 가치가 있는 훌륭한 설명이 stackoverflow에 있습니다.
 
 
 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다