2014-01-22 4 views
0

모든 $digest주기에 일부 기능을 실행하려고합니다. $scope에 대한

설명서를 읽

원하는 경우

이 $ 다이제스트가 호출 될 때마다, 당신은 없는 청취자와 watchExpression 기능을 등록 할 수 있습니다 통지 할 수 있습니다. ( watchExpression이 변화가 감지되었을 때 사이클을 소화 $ 당 여러 번 실행할 수 있기 때문에, 리스너를 여러 번 호출에 대비.)

는 그래서는 수행 할 수있는이 방법을 의미 하는가 :

$rootScope.$watch(function() { 
    // Cron job 
}); 

모든 $digest주기가 $rootScope에 도달하는지 또는 $rootScope에서 방출되는지 확실하지 않습니다. 나는 오직 하나의 $digest 루프 만 알고 $ watch가 변경을 감지 할 때마다 발생합니다.

+1

내 대답을 확인하십시오. http://stackoverflow.com/questions/21138388/angular-js-identify-an-digest-complete-event-and-removing-from-url-in-angular/21138524#21138524 –

+0

@IlanFrumer가 그것을보고 한 번 올렸습니다! – pilau

답변

2

Q : 이렇게하면이 방법으로 수행 할 수 있습니까?

A : 이지만 일부 지시문/서비스는 성능 향상을 위해 로컬 범위 만 소화하도록 선택할 수 있습니다.

그런데 다이제스트 루프에서 가능한 적은 코드를 실행하는 것이 좋습니다.

digest는 cron 작업과 다르며 x 초마다 자동으로 실행되지 않습니다.
$ scope. $ apply()를 호출하거나 ng-click 또는 $ http.get과 같은 이벤트가 발생할 때 실행됩니다.

+0

신속한 답변을 보내 주셔서 감사합니다. 호기심이 생기면 - 지역 범위를 소화하는 것과 그 반대를 구분하는 차이점은 무엇입니까? – pilau

+0

밥? 대답 하시겠습니까? 감사! – pilau

+0

$ scope. 또는 그 자식 스코프 만 변경되었다고 확신 할 때 $ scope. $ digest를 호출합니다. 이것은 $ scope와 비교하여 더티 검사를 제한합니다. $ apply는 모든 $ scope를 더티 검사하고 추가로 $ eval() 인수를 적용합니다. –