답변:
scope.$digest()
현재 범위와 모든 하위 항목에서도 감시자를 발사합니다. scope.$apply
전달 된 함수를 평가하고 $rootScope.$digest()
.
첫 번째는 현재 범위와 그 하위에 대한 감시자를 평가해야하기 때문에 더 빠릅니다. 두 번째는 감시자 $rootScope
와 모든 하위 범위 를 평가해야하기 때문에 더 느립니다 .
감시자 중 하나에서 오류가 발생하여를 사용하면 서비스 scope.$digest
를 통해 처리되지 않으므로 $exceptionHandler
직접 예외를 처리해야합니다. 내부적 scope.$apply
으로 try-catch
블록을 사용하고 모든 예외를 $exceptionHandler
.
$digest
현재 범위의 감시자뿐만 아니라 모든 자식에게도 화재를 일으 킵니다.
문서 자체에 언급 된 것처럼 $ digest주기는 언제든지 수행 $scope.$apply
됩니다. 범위 에 대한 개발자 가이드에 따라
식을 평가 한 후 $ apply 메서드는 $ digest를 수행합니다. $ digest 단계에서 스코프는 모든 $ watch 표현식을 검사하고 이전 값과 비교합니다.
그리고 Scope API 문서에 따라
일반적으로 컨트롤러 또는 지시문에서 직접 $ digest ()를 호출하지 않습니다. 대신 $ apply ()를 호출하면 (일반적으로 지시문 내에서) $ digest ()가 강제 실행됩니다.
따라서 명시 적으로를 호출해서는 안되며 메서드 $digest
를 호출 $apply
하면 다이제스트주기가 트리거됩니다.
$digest
도 범위의 어린이라고?