질문 : 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
출처 : https://stackoverflow.com/questions/12729122/angularjs-prevent-error-digest-already-in-progress-when-calling-scope-apply
'개발관련 > other' 카테고리의 다른 글
node.js 앱을 백그라운드 서비스로 실행하는 방법 (0) | 2021.10.05 |
---|---|
Subversion에서 파일을 무시하는 방법 (0) | 2021.10.05 |
GUID와 UUID간에 차이점 (0) | 2021.10.01 |
Angular / RxJs`Subscription` 구독 취소 시기 (0) | 2021.09.30 |
오래되고 사용되지 않는 Docker 이미지를 제거하는 방법 (0) | 2021.09.29 |