■ 참조(구글번역) – 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에 있습니다.
- AngularJS angular.copy 사용법, angular 복사 2019년 5월 17일
- AngularJS fromJson, toJson 사용법 2019년 5월 15일
- AngularJS에서 ng-style사용시 조건문 이용방법 2019년 4월 25일
- AngularJS에서 ng-style사용시 함수 이용방법 2019년 4월 23일
- AngularJS 동적 HTML, Function 추가 2019년 4월 15일
- AngularJS에서 팝업창 띄우기 2019년 4월 2일
- AngularJS 하나의 모듈에 factory 다중 등록 2018년 2월 26일
- AngularJS factory 예제 2018년 2월 26일
- AngularJS forEach ng-repeat 예제 2018년 2월 19일
- AngularJS $http, spring TEXT response 예제 2018년 1월 17일
- AngularJS selectbox 간단한 예제 2018년 1월 15일
- AnuglarJS forEach 예제 2018년 1월 12일
- AngularJS checkbox 제어 및 활성/비활성(ng-disabled) 예제 2018년 1월 8일
- AngularJS button 활성/비활성(ng-disabled) 예제 2018년 1월 8일
- AngularJS radio 활성/비활성(ng-disabled) 예제 2018년 1월 8일
- AngularJS $broadcast, $emit, $on 예제 2018년 1월 3일
- AngularJS – $watch $digest $apply Life Cycle 2017년 12월 26일
- AngularJS $watchCollection 2017년 12월 26일
- AngularJS $watchGroup 2017년 12월 26일
- AngularJS $watch 2017년 12월 26일
- AngularJS 반복문 ng-repeat 2017년 7월 22일
- AngularJS $timeout 2017년 7월 22일
- AngularJS Show/Hide, 보이기/숨기기 2017년 7월 16일
- AngularJS 라디오 버튼 제어 2017년 7월 16일
- AngularJS시작하기, Hello AngularJS 2017년 7월 15일