178 votes

Comment puis-je dire à AngularJS de "rafraîchir"

J'ai cliquez sur un événement qui se passe en dehors de la portée de mon custom de la directive, de sorte qu'au lieu d'utiliser le "ng-click" attribut, je suis en utilisant jQuery.cliquez sur() auditeur et l'appel d'une fonction à l'intérieur de ma portée comme ceci:

$('html').click(function(e) {
  scope.close();
);

close() est une fonction simple qui ressemble à ceci:

scope.close = function() {
  scope.isOpen = false;
}

De mon point de vue, j'ai un élément avec "ng-show" lié à isOpen comme ceci:

<div ng-show="isOpen">My Div</div>

Lors du débogage, j'ai constaté que close() est appelée, isOpen est en cours de mise à jour de faux, mais la AngularJS vue n'est pas mise à jour. Est il possible que je peux manuellement dire Angulaire de mettre à jour la vue? Ou est-il plus "Angulaire" de la démarche pour la résolution de ce problème que je ne suis pas le voir?

328voto

Dustin Points 1284

La solution à mon problème était d'appeler ...

 scope.$apply();
 

... dans mon rappel d'événement jQuery.

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