95 votes

Comment résoudre l'erreur Angular "10 itérations $digest() atteintes" ?

10 itérations de $digest() atteintes. Abandon !

Il y a beaucoup de texte justificatif dans le sens de " Les veilleurs ont tiré dans les 5 dernières itérations : "etc., mais une grande partie de ce texte est du code Javascript provenant de diverses fonctions. Existe-t-il des règles empiriques pour diagnostiquer ce problème ? S'agit-il d'un problème qui peut TOUJOURS être atténué, ou existe-t-il des applications suffisamment complexes pour que ce problème soit traité comme un simple avertissement ?

0voto

Scrappy Doo Points 3

J'ai rencontré ce problème où j'avais besoin d'une infobulle dynamique... ce qui faisait qu'angular la recalculait à chaque fois comme une nouvelle valeur (même si elle était la même). J'ai créé une fonction pour mettre en cache la valeur calculée comme ceci :

$ctrl.myObj = {
    Title: 'my title',
    A: 'first part of dynamic toolip',
    B: 'second part of dynamic tooltip',
    C: 'some other value',
    getTooltip: function () {
        // cache the tooltip
        var obj = this;
        var tooltip = '<strong>A: </strong>' + obj.A + '<br><strong>B: </strong>' + obj.B;
        var $tooltip = {
            raw: tooltip,
            trusted: $sce.trustAsHtml(tooltip)
        };
        if (!obj.$tooltip) obj.$tooltip = $tooltip;
        else if (obj.$tooltip.raw !== tooltip) obj.$tooltip = $tooltip;
        return obj.$tooltip;
    }
};

Puis dans le html, j'y ai accédé comme ceci :

<input type="text" ng-model="$ctrl.myObj.C" uib-tooltip-html="$ctrl.myObj.getTooltip().trusted">

0voto

Ahmed M. Matar Points 210

Voici comment j'ai abordé le problème et trouvé une solution : J'ai vérifié le texte, il indiquait :

Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!

Observateurs virés dans les 5 dernières itérations : [[{"msg" : "statement === statment && functionCall()", "newVal" :[{"id":7287, "referen...

donc si vous pouvez voir le

msg

c'est la déclaration qui génère l'erreur. J'ai vérifié la fonction appelée dans ce message, j'ai retourné (false) de toutes les fonctions pour déterminer laquelle a le problème. L'une d'entre elles appelait une fonction qui change constamment le retour, ce qui est le problème.

-4voto

cst1992 Points 1626

Aussi fou que cela puisse paraître, j'ai résolu cette erreur en redémarrant mon navigateur lorsqu'elle est apparue soudainement.

Une solution consiste donc à vider le cache de votre navigateur ou à essayer de le redémarrer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X