Herramientas de usuario

Herramientas del sitio


unidades:11_rootscope:01_watch

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
unidades:11_rootscope:01_watch [2014/10/25 09:47] – adminunidades:11_rootscope:01_watch [2014/10/25 10:26] (actual) – [La importancia de $watch] admin
Línea 50: Línea 50:
 Si lo que realmente queremos es saber cuando ha cambiado el valor de una propiedad de **modelo**, ¿Porque usar el evento ''onChange'' para comprobar sise ha modificado? ¿Que ocurre si modificamos la vista? Hay que recordar poner siempre ese ''onChange'' y por otro lado y si cambiamos directamente desde JavaScript el valor haciendo una asignación a la propiedad. Con ''onChange'' no lo podríamos detectar. Es decir que ''$watch'' es mucho mas útil que los eventos del DOM ya que nos permite detectar siempre el cambio independientemente desde donde se haya producido. Si lo que realmente queremos es saber cuando ha cambiado el valor de una propiedad de **modelo**, ¿Porque usar el evento ''onChange'' para comprobar sise ha modificado? ¿Que ocurre si modificamos la vista? Hay que recordar poner siempre ese ''onChange'' y por otro lado y si cambiamos directamente desde JavaScript el valor haciendo una asignación a la propiedad. Con ''onChange'' no lo podríamos detectar. Es decir que ''$watch'' es mucho mas útil que los eventos del DOM ya que nos permite detectar siempre el cambio independientemente desde donde se haya producido.
  
 +<note important> 
 +Siempre que puedas utiliza ''$watch'' en vez de eventos de los tag HTML como ''onChange'' , etc, ya que así estará mas separado el modelo de la vista. 
 +</note>
 ===== Comparando el objeto ===== ===== Comparando el objeto =====
 ¿Como sabe AngularJS que ha cambiado el valor de una propiedad? La respuesta puede parecer sencilla, con un simple "!==". Eso funciona muy bien con datos escalares como números o texto pero no funciona tan bien con objetos. Si comparamos 2 objetos distintos pero con los mismos valores,¿deberían ser iguales o distintos? Angular al usar "!==" serian distintos. ¿Como sabe AngularJS que ha cambiado el valor de una propiedad? La respuesta puede parecer sencilla, con un simple "!==". Eso funciona muy bien con datos escalares como números o texto pero no funciona tan bien con objetos. Si comparamos 2 objetos distintos pero con los mismos valores,¿deberían ser iguales o distintos? Angular al usar "!==" serian distintos.
unidades/11_rootscope/01_watch.1414223239.txt.gz · Última modificación: por admin