개발관련/other

AngularJS : $ scope. $ apply () 호출시 $digest already in progress 오류 해결방법

Rateye 2021. 10. 1. 12:19
728x90
반응형
질문 : AngularJS : $ scope. $ apply () 호출시 이미 진행중인 $ digest 오류 방지

Angular로 응용 프로그램을 빌드 한 이후로 내 페이지를 내 스코프에 수동으로 업데이트해야한다는 것을 알게되었습니다.

내가 아는 유일한 방법은 내 컨트롤러와 지시문의 범위에서 $apply() 이것의 문제는 다음과 같은 콘솔에 오류가 계속 발생한다는 것입니다.

오류 : $ digest가 이미 진행 중입니다.

누구든지이 오류를 피하거나 똑같은 일을하지만 다른 방식으로 달성하는 방법을 알고 있습니까?

답변

이 패턴을 사용하지 마십시오 -이로 인해 해결되는 것보다 더 많은 오류가 발생합니다. 무언가 고쳐 졌다고 생각했지만 그렇지 않았습니다.

$scope.$$phase $digest 가 이미 진행 중인지 확인할 수 있습니다.

if(!$scope.$$phase) {
  //$digest or $apply
}

$scope.$$phase$digest 또는 $apply 가 진행중인 "$digest" 또는 "$apply" 반환합니다. 이 상태의 차이점은 $digest 가 현재 범위와 그 하위 항목의 감시를 처리하고 $apply 가 모든 범위의 감시자를 처리한다는 것입니다.

@ dnc253의 요점에 따르면 $digest 또는 $apply 자주 전화를 걸면 잘못하고있을 수 있습니다. 일반적으로 Angular의 도달 범위 밖에서 발생하는 DOM 이벤트의 결과로 범위의 상태를 업데이트해야 할 때 요약해야합니다. 예를 들어 트위터 부트 스트랩 모달이 숨겨지는 경우입니다. $digest 가 진행 중일 때 DOM 이벤트가 발생하지만 때로는 그렇지 않습니다. 이것이 제가이 수표를 사용하는 이유입니다.

누구든지 알고 있다면 더 나은 방법을 알고 싶습니다.

댓글에서 : @anddoutoi

angular.js 안티 패턴

출처 : https://stackoverflow.com/questions/12729122/angularjs-prevent-error-digest-already-in-progress-when-calling-scope-apply
728x90
반응형