programing

각도 감시 사이클 또는 다이제스트 사이클이 완료되면 함수를 호출하는 방법

sourcejob 2023. 2. 8. 17:50
반응형

각도 감시 사이클 또는 다이제스트 사이클이 완료되면 함수를 호출하는 방법

모든 시계 사이클을 앵글 마감한 후 앵글에서 커스텀 함수를 호출할 수 있는 방법이 있습니까?

필요 컨트롤러 내부에 여러 개의 시계 기능이 있습니다.이제 모든 워치 기능이 angular에 의해 실행된 후에만 함수를 실행하고 싶다.

다이제스트가 완료되면 콜백을 등록하는 방법은 여러 가지가 있습니다.

사용.$$postDigest: $scope.$$postDigest전류 후에 콜백을 기동합니다.$digest사이클이 완료되었습니다.

그러나 이 작업은 다음 다이제스트 사이클 후에 한 번만 실행됩니다.각 다이제스트 사이클 후에 실행되도록 하려면$watch이는 여기에 제시된 코드샘플을 기반으로 합니다.

var hasRegistered = false;
$scope.$watch(function() {
  if (hasRegistered) return;
  hasRegistered = true;
  $scope.$$postDigest(function() {
    hasRegistered = false;
    fn();
  });
});

$watch다이제스트 사이클 중에 여러 번 트리거될 수 있으므로 플래그를 사용합니다.hasRegistered막다$$postDigest콜백은 여러 번 등록됩니다.주의: $$postDigest는 다른 다이제스트 사이클을 트리거하지 않습니다.그래서 어떤 수정사항이라도?$scope안에서.$$postDigest돔에 반사되지 않습니다. $$즉, 이는 angularjs의 프라이빗 함수이므로 함수가 안정적이지 않고 미래에 변경될 수 있습니다.

사용.$timeout:

$timeout(function(){
 console.log("Running after the digest cycle");
},0,false);

현재 다이제스트 사이클이 완료된 후 실행됩니다.참고: 세 번째 인수는 다른 다이제스트 사이클 트리거를 방지하기 위해 false로 설정됩니다.

언급URL : https://stackoverflow.com/questions/29093229/how-to-call-function-when-angular-watch-cycle-or-digest-cycle-is-completed

반응형