AngularJS : Éviter les erreurs de $digest déjà en cours lors de l'appel de $scope.$appliquer()

Je suis la recherche que j'ai besoin de mettre à jour ma page à ma portée manuellement de plus en plus et depuis la construction d'une application angulaire.

Le seul moyen que je connaisse pour ce faire est d'appeler $apply() de la portée de mes contrôleurs et des directives. Le problème, c'est qu'il garde de lancer une erreur de la console qui lit :

Erreur: $digest déjà en cours

Personne ne sait comment faire pour éviter cette erreur ou de réaliser la même chose mais d'une manière différente?

  • C'est vraiment frustrant chose que nous avons besoin d'utiliser $s'appliquent de plus en plus.
  • J'obtiens cette erreur ainsi, même si je suis appelant $s'appliquent dans un rappel. Je suis à l'aide d'un tiers de la bibliothèque pour accéder à des données sur leurs serveurs, donc je ne peux pas profiter de $http, je ne veux depuis que j'aurais à réécrire leur bibliothèque à utiliser $http.
  • utilisation $timeout()
  • utiliser $timeout(fn) + 1, Il peut résoudre le problème, !$la portée.$$la phase n'est pas la meilleure solution.
  • Seulement enrouler code/appel de la portée.$s'appliquent à partir de dans délais d'attente (pas de $timeout) fonctions AJAX (pas $http) et des événements (pas ng-*). S'assurer, si vous appelez à partir de l'intérieur d'une fonction (qui est appelé via le timeout/ajax/événements), qu'il n'est pas aussi en cours d'exécution sur la charge initialement.
  • J'obtiens cette erreur dans un endroit où je ne suis même pas appeler $s'appliquent. Je vais appeler element[0].focus();
  • Aussi, essayez d'utiliser $digest si vous le pouvez, car il ne fonctionne que dans le champ d'application et non sur la totalité de l'app. Pour des vitesses de souci! 🙂
  • angularjs et $s'appliquent

InformationsquelleAutor Lightbulb1 | 2012-10-04