Los watch (obervables) en AngularJS

Quizás todos saben ya que estoy convirtiéndome en un fan de AngularJS. ¿Por qué? Supongo que porque me resulta una forma útil de programar del lado del cliente sin tener que volverme loco para integrar montones de tecnologías.

En esta ocasión me parece meritorio comentarles sobre el manejo de los $watch y $watchCollection que nos permiten escuchar los cambios en el modelo a diferentes nivelesDouble Banana Boat. A saber:

  • watch(,,false) o watch(,): percibe el cambio entre algún valor del $scope
  • watchCollection: percibe el cambio en la cantidad de contenidos de una Array, dentro del $scope
  • watch(,,true): percibe el cambio en cualquier valor dentro del árbol de la variable de scope analizada
    • es la version más costosa, porque recorre todos los valores del contenido observado, permitiendo saber si hubo el más mínimo cambio. Hay que tener mucha precaución antes de usarlo

Me robé una imagen de acá http://teropa.info/blog/2014/01/26/the-three-watch-depths-of-angularjs.html como para ilustrar los casos posibles. Ideal para quienes preferimos no leer mucho.

angular_watch_depths

 

También, me encontré con algunas ayudas sobre cómo verificar que estos $watch no se ejecuten más de una vez. Haciendo una validación previa.

if (newValue !== oldValue) {
    // hacer lo que tengamos que hacer
}

Ver más datos aquí.

Y un muchacho que se tomó el trabajo de hacer un lindo post sobre el tema aquí.


Discussion Area - Leave a Comment