Muestra las diferencias entre dos versiones de la página.
| unidades:11_rootscope:01_watch [2014/10/25 09:47] admin | unidades:11_rootscope:01_watch [2014/10/25 10:26] (actual) admin [La importancia de $watch] | ||
|---|---|---|---|
| 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. | ||