angularjs model digest

angularjs - $document angular



¿Puedo evitar/demorar el resumen de AngularJS $ cuando se actualiza el modelo? (1)

¿Hay alguna manera de posponer o demorar que ocurra un resumen?

Tengo un montón de cambios que quiero hacer a un modelo, pero no quiero que el compendio se active hasta que se realicen todos los cambios en el modelo. Algunos de los objetos en el modelo tienen observadores que actualizan otros objetos en el modelo para cambiarlos.

Idealmente me gustaría

  • Detener el $ digest
  • Realiza todos los cambios en el modelo.
  • Comience el $ digest

El $ digest encontrará todos los objetos sucios y disparará a los observadores.

Otra solución para esto es, en lugar de detener $ digest que podría

  • Quitar los vigilantes
  • Realice todos los cambios en el modelo (el resumen aún se ejecuta)
  • Añadir los observadores que fueron eliminados.

Una vez que se agreguen los observadores, necesitaría ejecutar los métodos del observador para garantizar que el modelo se encuentre en el estado correcto.

Siento que la segunda opción parece ser un hack.

Ideas ??


Esto no es un hack en absoluto. Es una buena pregunta porque los grandes conjuntos de datos pueden hacer que el ciclo $ digest se ejecute muy lentamente cuando un usuario ingresa texto rápidamente o mantiene presionada la tecla de retroceso. Definitivamente, puedes hacer ajustes de rendimiento como tener cuidado con tus funciones $watch y $filter , pero a veces es mejor retrasar el ciclo de $digest usando una función de rebote .