- Antes de comenzar, necesitamos conocer algunos términos relacionados con el ciclo de digestión. Son AngularJs watch, watch counts y watch list.
- Reloj AngularJs: lo proporciona AngularJs Framework para realizar un seguimiento de las variables de alcance y el cambio en sus valores. Los relojes son creados automáticamente por AngularJs Framework. Por lo general, se realiza para enlaces de datos y para qué variables decide AngularJs Framework. Las funciones personalizadas que se crean para los relojes se denominan detectores de relojes.
- Números de relojes: si el número de relojes es inferior a 2000, el rendimiento es mejor. Podemos usar la extensión de observadores angulares para contarlos. Angular realiza la observación de variables vinculadas a datos, pero si queremos, también podemos realizar la observación de variables normales, utilizando la función de observación. Toma como parámetro la variable que explícitamente queremos observar.
- Lista de vigilancia: Mantiene una lista de todas las vigilancias asociadas con una aplicación angular. es decir, todos los enlaces de datos que se supervisan. Se mantiene una lista de vigilancia para todos los ámbitos, incluido el raíz.
Ciclo de digestión
- Los relojes continúan actualizando nuevos valores y actualizan DOM, por lo tanto, representan los cambios. Este proceso es responsable de recorrer relojes completos en busca de cambios. Realiza una verificación sucia de los relojes presentes en la lista de vigilancia. La comprobación sucia consiste en comprobar los valores actuales de las variables a partir de sus valores anteriores.
- Los oyentes de observación se ejecutan automáticamente cada vez que el proceso de resumen encuentra modificaciones en las variables. Toma nota de los cambios y luego notifica a AngularJs Framework para actualizar DOM. Por lo tanto, al final de cada proceso de resumen, se actualiza DOM.
- Angular Context es un entorno de tiempo de ejecución de AngularJs Framework.
- El primer proceso de resumen realiza una verificación sucia en los relojes y verifica si hay alguna modificación
. Nuevamente realiza el segundo ciclo de verificación sucia en el ciclo anterior, observa a los oyentes. Porque puede haber variables que han sido modificadas por otras. Se realizan un mínimo de 2 iteraciones y se pueden ejecutar un máximo de 10. Aunque se prefiere minimizar el ciclo de digestión para un mejor rendimiento. El error se lanza después del máximo.
Actualización de primer y segundo nivel
Un ejemplo para actualizaciones de segundo nivel:
$scope.a = 1; $scope.b = 2; $scope.c = 3; $scope.$watch('a', function( newValue, oldValue ) { if( newValue != oldValue ) { console.log("a is modified to " +newValue ); } }); $scope.$watch('b', function( newValue, oldValue ) { if( newValue != oldValue ) { console.log("b is modified to " +newValue ); } }); $scope.$watch('c', function( newValue, oldValue ) { if( newValue != oldValue ) { console.log("c is modified to " +newValue ); if( $scope.c > 50 ) { $scope.a = 1000; } } }); $rootscope.$watch( function() { console.log(" digest iteration started "); }); |
Teniendo en cuenta que las variables de alcance a, b, c están vinculadas a los datos y son elegibles para el proceso de resumen. Si inspeccionamos la aplicación angular en el navegador y abrimos la consola. Podemos rastrear los cambios ya que las declaraciones de impresión nos ayudarán. Supongamos que hubiera un enlace bidireccional para c con un cuadro de entrada, podríamos rastrear fácilmente la cantidad de veces que se modifica. De hecho, también podemos inspeccionar el proceso de resumen aplicando la función $watch en $rootscope.
$watch: esta función toma tres parámetros: expresión de observación, oyente e igualdad de objetos. Excepto por la expresión, los otros dos son opcionales.
$scope.$apply(function() { });
Escenario completo del ciclo Digest:
Publicación traducida automáticamente
Artículo escrito por ajaychawla y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA