2015-09-24 11 views
10

Jest to powszechny problem:

5 $ Digest() iteracji osiągnięte. Przerwanie!
Obserwowane przez wystrzelone w ciągu ostatnich 5 powtórzeń: []

Dokumentacja (https://docs.angularjs.org/error/ $ rootScope/infdig) wyjaśnia, czego NIE robić, aby uniknąć sytuacji.

Jednak raz na jakiś czas trafiamy w tę sytuację. A w przypadku projektu większego niż aplikacja zabawkowa znalezienie przyczyny nieskończonej pętli trawienia może być naprawdę trudne.

Szukam debugowania wskazówek, w jaki sposób mogę dowiedzieć się, gdzie znajduje się kod, co powoduje pętlę.

Odpowiedz

2

Może to być wiele powodów. Jednym z najczęstszych powodów, dla których stanąłem, jest filtr w wersji ng-repeat, który zwraca nową tablicę do pracy z ng-repeat.

Sprawdź więc swoje wyrażenia ng-repeat, które mają powiązane filtry modyfikujące tablicę.

5

pytanie zostało już odpowiedział tutaj - How to Troubleshoot Angular "10 $digest() iterations reached" Error

jako CV dwóch najlepszych odpowiedzi:

  1. usunąć wszystkie podejrzane HTML - w zasadzie usunąć wszystkie html z szablonu i sprawdzić, czy istnieją brak ostrzeżeń (https://stackoverflow.com/a/17129274/274500)
  2. zwykle zdarza się, gdy funkcja zwraca nowy obiekt (https://stackoverflow.com/a/17116322/274500)

Plus

zawsze można umieścić warunkową breakpoint tutaj https://github.com/angular/angular.js/blob/master/src/ng/rootScope.js#L851 sprawdzić StackTrace wyjątku.

+0

W moim przypadku problem polegał na tym, że w ogóle nie było nieskończonej pętli, ponieważ zawsze zwracałem to samo odwołanie do obiektu. Mam szczegółowy sposób debugowania tego w [odpowiedź na powiązane pytanie] (http://stackoverflow.com/a/38981431/546730). Ta sprawa jest jednak dość rzadka ... –

0

Dla mnie błąd dzieje się w sposobie zmieniania URL:

self.setURL = function(item) { 
    var mainUrl = window.location.origin + '#/' + self.baseUrl; 
    if (item) { 
     mainUrl += item.testId; 
    } 
    $location.$$absUrl = mainUrl; 
    }; 

to było przyczyną błędu $rootScope:infdig

więc podczas debugowania ten czek cokolwiek Zmiana UR, lokalizacja, HREF w swojej bieżący kontroler/dyrektywa

Powiązane problemy