Diferencias

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

Enlace a la vista de comparación

unidades:03_servicios:04_tiposservicios [2014/07/28 10:59]
admin
unidades:03_servicios:04_tiposservicios [2014/09/07 14:46] (actual)
admin [Tipos]
Línea 1: Línea 1:
 ====== 3.4 Tipos de servicios ====== ====== 3.4 Tipos de servicios ======
-Hasta ahora hemos visto como usar varios tipos de servicios pero pasemos ahora a crear nuestros propios servicios. ​+Hasta ahora hemos visto cómo usar varios tipos de servicios pero pasemos ahora a crear nuestros propios servicios. ​
  
 Como ya dijimos al principio de esta unidad realmente hay 5 tipos de servicios que son: Como ya dijimos al principio de esta unidad realmente hay 5 tipos de servicios que son:
Línea 7: Línea 7:
   * [[unidades:​03_servicios:​07_service|service]]   * [[unidades:​03_servicios:​07_service|service]]
   * [[unidades:​03_servicios:​08_factory|factory]]   * [[unidades:​03_servicios:​08_factory|factory]]
-  * [[unidades:​03_servicios:​09_provider|provider]]: Se puede pensar que son dos tipos el propio provider y el factory asociado (que llamaremos factory-provider).+  * [[unidades:​03_servicios:​09_provider|provider]]
  
 ===== Bloques ===== ===== Bloques =====
 Antes de ver las diferencias entre ellos veamos 2 nuevos artefactos de AngularJS: Antes de ver las diferencias entre ellos veamos 2 nuevos artefactos de AngularJS:
-  * [[#​bloque_config]] +  * [[#​bloque_config|Bloque config]] 
-  * [[#bluqe_run]]+  * [[#bloque_run|Bloque run]]
  
 ==== Bloque config ==== ==== Bloque config ====
-Un bloque config es una función que definimos en nuestro código pero que se ejecutará al iniciar un programa en AngularJS. Se define llamando ​el método ''​config''​ de un módulo.+Un bloque config es una función que definimos en nuestro código pero que se ejecutará al iniciar un programa en AngularJS ​para configurar un [[unidades:​03_servicios:​09_provider|provider]]. Se define llamando ​al método ''​config''​ de un módulo.
  
 Veamos un ejemplo: Veamos un ejemplo:
 <sxh js> <sxh js>
 app.config(function() { app.config(function() {
-  //Pon aqui el código que quieras+  //Pon aquí el código que quieras
 }); });
 </​sxh>​ </​sxh>​
 +//siendo app un módulo de Angular//
  
 <note tip>​Podemos definir tantos bloques config como queramos en una aplicación</​note>​ <note tip>​Podemos definir tantos bloques config como queramos en una aplicación</​note>​
- 
 ==== Bloque run ==== ==== Bloque run ====
-El bloque run es al igual que el bloque config una función que se ejecuta al iniciar un programa en AngularJS. Se define llamando el método ''​run''​ de un módulo.+El bloque run esal igual que el bloque configuna función que se ejecuta al iniciar un programa en AngularJS. Se define llamando el método ''​run''​ de un módulo.
  
 Veamos un ejemplo: Veamos un ejemplo:
 <sxh js> <sxh js>
 app.run(function() { app.run(function() {
-  //Pon aqui el código que quieras+  //Pon aquí el código que quieras
 }); });
 </​sxh>​ </​sxh>​
 +//siendo app un módulo de Angular//
  
 <note tip>​Podemos definir tantos bloques run como queramos en una aplicación</​note>​ <note tip>​Podemos definir tantos bloques run como queramos en una aplicación</​note>​
- 
 ==== Diferencias ==== ==== Diferencias ====
-¿Cuales ​son las diferencias entre un bloque config y un bloque run?+¿Cuáles ​son las diferencias entre un bloque config y un bloque run?
  
-La primera diferencia es que primero ​se se ejecutan todos los bloques config y luego todos bloques run.+La primera diferencia es que primero se ejecutan todos los bloques config y luego todos bloques run.
  
-El bloque run sería mas parecido al típico ''​main''​ de cualquier programa , podemos poner el código que queramos. Un bloque config por otro lado sirve para configurar los [[unidades:​03_servicios:​09_provider|provider]]. ​+El bloque run sería mas parecido al típico ''​main''​ de cualquier programa , podemos poner el código que queramos. Un bloque config por otro lado sirve para configurar los [[unidades:​03_servicios:​09_provider|provider]].
  
-Ya veremos en detalle que es un [[unidades:03_servicios:09_provider|provider]] pero por ahora saber que es la forma de configurar nuestros servicios antes de que podemos usarlos ​en un bloque ​run o en el resto de la aplicación.+En un bloque run se puede acceder al [[unidades:04_masdirectivas:11_rootscope|$rootScope]] mientras ​que en un bloque ​config no se puede. Ya veremos más adelante qué es el [[unidades:​04_masdirectivas:​11_rootscope|$rootScope]].
  
 +Ya veremos en detalle qué es un [[unidades:​03_servicios:​09_provider|provider]] pero por ahora sabed que es la forma de configurar nuestros servicios antes de que podamos usarlos en un bloque run o en el resto de la aplicación.
 +
 +Así que tenemos un servicio que queremos que sea configurable,​ así que usamos un [[unidades:​03_servicios:​09_provider|provider]] para permitir que dicho servicio sea configurable y usamos el bloque config para configurar el [[unidades:​03_servicios:​09_provider|provider]] que a su vez configura nuestro servicio.
 ===== Tipos ===== ===== Tipos =====
-Volvamos ahora a los tipos de servicios. La diferencia principal entre ellos es donde se pueden inyectar mientras se inicializa la aplicación,​ es decir que según el tipo de servicio ​lo podremos inyectar en un bloque config o en un bloque ​config ​o en otro servicio, etc.+Volvamos ahora a los tipos de servicios. La diferencia principal entre ellos es dónde ​se pueden inyectar mientras se inicializa la aplicación,​ es decir que según el tipo de servicio ​los podremos inyectar en un bloque config o en un bloque ​run o en otro servicio, etc.
  
-La siguiente tabla indica ​donde pueden inyectar o donde no inyectar cada uno de los servicios al **iniciar la aplicación**.+La siguiente tabla indica ​dónde se pueden inyectar o donde no inyectar cada uno de los servicios al **iniciar la aplicación**.
 ^  ^  Se puede inyectar en un  ^^^^ ^  ^  Se puede inyectar en un  ^^^^
 ^  Tipo  ^  Provider ​ ^  Bloque config ​ ^  Servicio ((service, factory o factory-provider)) ​ ^  Bloque run  ^ ^  Tipo  ^  Provider ​ ^  Bloque config ​ ^  Servicio ((service, factory o factory-provider)) ​ ^  Bloque run  ^
Línea 59: Línea 61:
 | service | No | No | Si | Si | | service | No | No | Si | Si |
 | factory | No | No | Si | Si | | factory | No | No | Si | Si |
-| factory-provider | No | No | Si | Si |+| factory-provider ​((Es la función factory llamada ''​$get''​ que genera el servicio dentro del provider )) | No | No | Si | Si |
  
  
Línea 74: Línea 76:
  
 : 3. Llamar a bloques **config**; : 3. Llamar a bloques **config**;
-note right: ​Aqui se configuran los **provider**+note right: ​Aquí se configuran los **provider**
 : 4. Inicializar ​ **value** , **service** , **factory** y **factory-provider**;​ : 4. Inicializar ​ **value** , **service** , **factory** y **factory-provider**;​
 note right: En este punto ya no se tiene acceso al **provider** note right: En este punto ya no se tiene acceso al **provider**
 : 5. Llamar a bloques **run**; : 5. Llamar a bloques **run**;
 +  ​
 stop stop
 </​uml>​ </​uml>​
  
-  * Actividad 1: Se puede ver como lo primero que se hace es inicializar las ''​constant'',​ por lo tanto éstas se pueden inyectar en cualquier sitio.+  * Actividad 1: Se puede ver cómo lo primero que se hace es inicializar las ''​constant'',​ por lo tanto éstas se pueden inyectar en cualquier sitio.
   * Actividad 2: Seguidamente se crean  los ''​provider''​   * Actividad 2: Seguidamente se crean  los ''​provider''​
   * Actividad 3: Se llaman a los bloques ''​config''​. Por lo tanto en un bloque ''​config''​ se puede inyectar tanto una ''​constant''​ como un ''​provider''​. En un bloque ''​config''​ lo que se hace es configurar los ''​provider''​. ​   * Actividad 3: Se llaman a los bloques ''​config''​. Por lo tanto en un bloque ''​config''​ se puede inyectar tanto una ''​constant''​ como un ''​provider''​. En un bloque ''​config''​ lo que se hace es configurar los ''​provider''​. ​
   * Actividad 4: Ahora es cuando se llama a todos los servicios //​normales//​ que son los ''​value''​ , ''​service''​ , ''​factory''​ y ''​factory-provider''​. Llegados a este punto los ''​provider''​ no están accesibles ya que al estar ya configurados solo se tiene  acceso a los ''​factory-provider''​ correspondientes a sus ''​provider''​.   * Actividad 4: Ahora es cuando se llama a todos los servicios //​normales//​ que son los ''​value''​ , ''​service''​ , ''​factory''​ y ''​factory-provider''​. Llegados a este punto los ''​provider''​ no están accesibles ya que al estar ya configurados solo se tiene  acceso a los ''​factory-provider''​ correspondientes a sus ''​provider''​.
-  * Actividad 5: Se llama al bloque ''​run''​ para inicializar la aplicación ​teniendo acceso a todo excepto los ''​provider''​+  * Actividad 5: Se llama al bloque ''​run''​ para inicializar la aplicación ​pudiendo inyectar cualquier tipo de servicio ​excepto los ''​provider''​
  
 <note tip> <note tip>
-Como es de esperar AngularJS no permite la referencias circulares entre servicios. En ese caso se producirá el error:+Como es de esperarAngularJS no permite la referencias circulares entre servicios. En ese caso se producirá el error:
   Uncaught Error: [$injector:​cdep] Circular dependency found: s1 <- s2 <- s1   Uncaught Error: [$injector:​cdep] Circular dependency found: s1 <- s2 <- s1
   ​   ​
 Siendo '​s1'​ y '​s2'​ los servicios con referencias entre ellos. Siendo '​s1'​ y '​s2'​ los servicios con referencias entre ellos.
 </​note>​ </​note>​
 +
 +<​note>​
 +Para acabar, decir que no creo que se haya entendido todo lo que he dicho en esta página ya que es bastante densa. En los siguientes temas seguimos hablando con todo ésto por lo que espero que finalmente se entienda. ​
 +</​note>​
 +
unidades/03_servicios/04_tiposservicios.1406537978.txt.gz · Última modificación: 2014/07/28 10:59 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