Diferencias

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

Enlace a la vista de comparación

unidades:11_rootscope:01_watch [2014/10/24 15:43]
admin [Antipatrón]
unidades:11_rootscope:01_watch [2014/10/25 10:26] (actual)
admin [La importancia de $watch]
Línea 36: Línea 36:
   * Línea 11: Ya hemos comprobado que los valores son distintos y ahora que cuando //hacemos// lo que necesitemos hacer. En nuestro ejemplo es simplemente mostrar un ''​alert''​.   * Línea 11: Ya hemos comprobado que los valores son distintos y ahora que cuando //hacemos// lo que necesitemos hacer. En nuestro ejemplo es simplemente mostrar un ''​alert''​.
   * Líneas 14 y 15: Si llamáramos a la función ''​change''​ desde un ''​ng-click''​ o desde donde queramos , como cambia el valor de la propiedad ''​nombre''​ se ejecutará la función de //​callback//​ del ''​$watch''​.   * Líneas 14 y 15: Si llamáramos a la función ''​change''​ desde un ''​ng-click''​ o desde donde queramos , como cambia el valor de la propiedad ''​nombre''​ se ejecutará la función de //​callback//​ del ''​$watch''​.
- 
-===== La importancia de $watch ===== 
-Como vemos es muy sencillo el uso de ''​$watch''​. Pero , ¿porque es tan importante ''​$watch''?​ Hasta ahora hemos podido hacer cosas similares usando los eventos ''​onClick''​ o ''​onChange''​ ¿Que tiene de diferente? Pues la diferencia es que ya no estamos monitorizando cambios en la vista por ejemplo mediante ''​onChange''​ sino que directamente monitorizamos el propio modelo, eso hace que separemos aun mas la vista del modelo, lo que ayuda a seguir el patrón MVC.  
- 
-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 tip> <note tip>
Línea 48: Línea 43:
 } }
 </​sxh>​ </​sxh>​
 +</​note>​
 +
 +===== La importancia de $watch =====
 +Como vemos es muy sencillo el uso de ''​$watch''​. Pero , ¿porque es tan importante ''​$watch''?​ Hasta ahora hemos podido hacer cosas similares usando los eventos ''​onClick''​ o ''​onChange''​ ¿Que tiene de diferente? Pues la diferencia es que ya no estamos monitorizando cambios en la vista por ejemplo mediante ''​onChange''​ sino que directamente monitorizamos el propio modelo, eso hace que separemos aun mas la vista del modelo, lo que ayuda a seguir el patrón MVC. 
 +
 +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>​ </​note>​
 ===== Comparando el objeto ===== ===== Comparando el objeto =====
Línea 295: Línea 299:
   * Línea 14: Se modifican las 2 propiedades a la vez.   * Línea 14: Se modifican las 2 propiedades a la vez.
  
-En este caso nunca se llamará a la función de //​callback//​ ya que el antiguo valor de la expresión es 6 al ser la suma de 5 + 1 ((a + b = 5 + 1 = 6)), pero el nuevo valor tambien ​es 6 al ser la suma de 6 + 0 ((a + b = 6 + 0 = 6)) , por lo que nunca se detectará el cambio en estos casos.+En este caso nunca se llamará a la función de //​callback//​ ya que el antiguo valor de la expresión es 6 al ser la suma de 5 + 1 ((a + b = 5 + 1 = 6)), pero el nuevo valor también ​es 6 al ser la suma de 6 + 0 ((a + b = 6 + 0 = 6)) , por lo que nunca se detectará el cambio en estos casos. Es decir que la expresión "''​a + b''"​ significa monitorizar la **SUMA** de "''​a''"​ y "''​b''"​ por lo que si dicha suma no cambia nunca se ejecuta la función de //​callback//​.
 ===== Ejemplo ===== ===== Ejemplo =====
 +
 +Ejemplo simple del método ''​$watch''​
  
 {{url>​http://​embed.plnkr.co/​PbLgt2}} {{url>​http://​embed.plnkr.co/​PbLgt2}}
  
 ===== Referencias ===== ===== Referencias =====
- * [[https://​docs.angularjs.org/​api/​ng/​type/​$rootScope.Scope#​$watch|/​ API Reference / ng / type components in ng / $rootScope.Scope / $watch]]+  ​* [[https://​docs.angularjs.org/​api/​ng/​type/​$rootScope.Scope#​$watch|/​ API Reference / ng / type components in ng / $rootScope.Scope / $watch]] 
 +  * [[https://​docs.angularjs.org/​api/​ng/​type/​$rootScope.Scope#​$watchCollection|/​ API Reference / ng / type components in ng / $rootScope.Scope / $watchCollection]] 
 +  * [[https://​docs.angularjs.org/​api/​ng/​type/​$rootScope.Scope#​$watchGroup|/​ API Reference / ng / type components in ng / $rootScope.Scope / $watchGroup]]
unidades/11_rootscope/01_watch.1414158219.txt.gz · Última modificación: 2014/10/24 15:43 por admin
Ir hasta arriba
CC Attribution-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0