Comment gérer la latence du Live Binding avec Angular.

Introduction :


La liaison automatisée modèle-vue d’Angular est super. Seulement, j’ai pu constater qu’une latence se créait dans mes 2 derniers projets, mon petit stock et evalEntretien. Dans mon petit stock, c’est quand on change un prix dans la liste des objets, et dans evalEntretien, c’est quand on coche des étoiles. Il faut trouver une méthode, ou un moyen pour qu’il n’y ait pas de latence.

Mes pistes pour supprimer la latence:


  • Depuis la version 1.3, j’ai entendu parler qu’on peux désactiver le binding d’Angular en utilisant  2 fois 2 points :
    {{::message}}
  • En fait, ils appellent ça le one time binding, et cela ne binde qu’une seule fois :One-time bindingAn expression that starts with :: is considered a one-time expression. One-time expressions will stop recalculating once they are stable, which happens after the first digest if the expression result is a non-undefined value (see value stabilization algorithm below).
  • A part ca, il faut trouver le moyen de ne pas faire de binding, quand il le faut, éventuellement en copiant un partie du modèle dans une variable objet JS, non bindée, puis à la fin, lors d’un clic sur bouton, on ré-injecte le tout dans le modèle.

Admettons que le binding d’Angular ralentisse l’application car il est relié à un graphique par exemple, qui s’anime en temps réel, alors il faut « délier » provisoirement le binding, tant pis si le graphe n’est pas rafraichi en temps réel, puis on le rafraichi sur bouton. Car finalement, le rafraichissement en temps réel n’a pas forcément d’intérêt quand on y pense.

Des liens :


https://www.exratione.com/2013/12/considering-speed-and-slowness-in-angularjs/ https://github.com/Pasvaz/bindonce https://www.binpress.com/tutorial/speeding-up-angular-js-with-simple-optimizations/135

https://hypedrivendev.wordpress.com/2014/06/24/nouveautes-angularjs-1_3/

Publicités