validacion - validar formulario javascript html5
La mejor práctica para mantener las funciones `$ watch` lejos de sus controladores (1)
Supongo que dónde colocar $watch
depende en gran medida del escenario de caso de uso. Lo más importante para tener cuidado con $watch
es no hacer ningún trabajo duro dentro de la función de manejo, especialmente si lo que estás viendo está cambiando mucho; eso amortiguaría mucho tu rendimiento. Y asegúrese de que en su función de manejo no cambie otra cosa que ya esté siendo observada ya que esto causará una cadena de actualizaciones de cambios.
Si está seguro de que la variable que está viendo solo se puede cambiar desde un lugar, es mejor utilizar ng-change
lugar de $watch
ya que ya conoce el lugar donde se cambia.
En general, es una buena práctica no llenar el objeto rootScope
con objetos innecesarios, pero si está buscando alguna variable que se use en toda la aplicación, como el atributo del usuario actual, supongo que tendría sentido poner $watch
expression en $rootScope
.
Intenté encontrar algunos buenos ejemplos de las mejores prácticas para mover funciones de $watch
de un controlador a una fábrica, por ejemplo.
Lo que he encontrado es que en realidad no hay una opinión unánime sobre lo que es mejor hacer. He visto ejemplos de inyección del $rootScope
en una fábrica y $watch
ing para $watch
los cambios de valor allí.
Otra sugerencia es evitarlos siempre que sea posible, y usar ngChange
lugar del elemento en sí, por ejemplo:
<div ng-model="foo.bar" ng-change="updateValue(foo.bar)"></div>
¿Cuál es tu camino propuesto? He estado poniendo $watch
en mis controladores desde que comencé a aprender AngularJS, pero ahora quiero adoptar enfoques de mejores prácticas, tratando de hacer y mantener mis controladores tan delgados como sea posible.