Cuando AngularJS desencadena un $ ONEVAL, ¿hay alguna forma de decir inmediatamente qué valores en este alcance han cambiado?

StackOverflow https://stackoverflow.com/questions/7354870

  •  28-10-2019
  •  | 
  •  

Pregunta

Quiero sincronizar los cambios en el servidor automáticamente. Actualmente estoy detectando cambios en un scope.$onEval Manejador por JSON Serializando el estado de la aplicación y comparándolo con una copia previamente serializada, utilizando Diff-Match-Patch.

Me preguntaba si AngularJS tiene algo incorporado para hacer que esto sea más eficiente.

¿Fue útil?

Solución

Podrías usar múltiples $ reloj'Es en lugar de un solo $onEval (Tenga en cuenta que $ Watch puede tomar una función como un argumento en lugar de una cadena/expresión, y en la versión> = 0.10.0 los valores observados se comparan usando angular.object.equals). Aparte de eso, no conozco ningún mecanismo de AngularJS que sea útil para esto.

Otros consejos

Estoy trabajando en algo similar. Como @psyho sugirió que estoy usando $ reloj Para atrapar los cambios.

scope.$watch("dataObject",function (newValue, oldValue) {
    //calculate changes
    //send the changes to the server
});

Luego uso la lógica de jQuery diff para calcular qué cambios se hicieron.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top