Diferencias

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

Enlace a la vista de comparación

unidades:07_rutas:02_routeprovider [2014/09/02 00:48]
admin
unidades:07_rutas:02_routeprovider [2015/02/16 09:55] (actual)
admin [Alternativa: ui-router]
Línea 1: Línea 1:
 ====== 7.2 $routeProvider ====== ====== 7.2 $routeProvider ======
-Para usar las rutas en AngularJS lo primero que necesitaremos será configurarlo para poder asociar a la ruta ((Que es realmente un fragmento de la URL)) la página HTML que se debe cargar al navegar a esa ruta. Para ello tenemos el servicio [[https://​docs.angularjs.org/​api/​ngRoute/​provider/​$routeProvider|$routeProvider]] de AngularJS.+Para usar las rutas en AngularJS lo primero que necesitaremos será configurarlo para poder asociar a la ruta ((que es realmente un fragmento de la URL)) la página HTML que se debe cargar al navegar a esa ruta. Para ello tenemos el servicio [[https://​docs.angularjs.org/​api/​ngRoute/​provider/​$routeProvider|$routeProvider]] de AngularJS.
  
 Este servicio tiene 2 métodos: Este servicio tiene 2 métodos:
Línea 29: Línea 29:
  
   * Línea 1: Definimos primero el path correspondiente a la ruta.   * Línea 1: Definimos primero el path correspondiente a la ruta.
-  * Línea 3: Definimos el objeto JavaScript que contiene los datos de la ruta. Siendo ​la página ''​pagina1.html''​ y el controlador que usamos ''​Pagina1Controller''​+  * Línea 3: Definimos el objeto JavaScript que contiene los datos de la ruta, siendo ​la página ''​pagina1.html''​ y el controlador que usamos ''​Pagina1Controller''​
   * Línea 8: Ahora es cuando le decimos a AngularJS el path y la definición de la ruta.   * Línea 8: Ahora es cuando le decimos a AngularJS el path y la definición de la ruta.
  
-En este ejemplo si el usuario añade a la página principal "#/​pagina1"​ se cargará dentro de la página principal la página HTML llamada ''​pagina1.html''​ y como controlador de esa nueva página se usará ''​Pagina1Controller''​.+En este ejemplosi el usuario añade a la página principal "#/​pagina1"​ se cargará dentro de la página principal la página HTML llamada ''​pagina1.html''​ y como controlador de esa nueva página se usará ''​Pagina1Controller''​.
  
 <note tip> <note tip>
Línea 39: Línea 39:
  
 <note important>​ <note important>​
-Recordar ​que aunque el path sea ''/​pagina1''​ y la página se llame ''​pagina1.html''​ realmente no tienen por qué coincidir en nada los nombres, aunque por coherencia suelen ser parecidos.+Recordad ​que aunque el path sea ''/​pagina1''​ y la página se llame ''​pagina1.html''​ realmente no tienen por qué coincidir en nada los nombres, aunque por coherencia suelen ser parecidos.
  
 No tendría mucho sentido navegar a la ruta ''/​ventas''​ y que se cargara la página ''​compras.html''​ aunque no hay nada que lo impida. No tendría mucho sentido navegar a la ruta ''/​ventas''​ y que se cargara la página ''​compras.html''​ aunque no hay nada que lo impida.
Línea 53: Línea 53:
  
 ===== otherwise ===== ===== otherwise =====
-En caso de que el usuario pusiera una ruta que no existe o simplemente no pusiera ninguna ruta , la página principal se podría quedar en blanco ya que no cargaría ninguna página. Para evitar ​eso AngularJS permite, en caso de que no pongamos ninguna ruta o que la ruta no exista, que se navegue a una ruta predeterminada. Para ello usamos el método ''​otherwise''​.+En caso de que el usuario pusiera una ruta que no existe o simplemente no pusiera ninguna ruta , la página principal se podría quedar en blanco ya que no cargaría ninguna página. Para evitar ​éso AngularJS permite, en caso de que no pongamos ninguna ruta o que la ruta no exista, que se navegue a una ruta predeterminada. Para ello usamos el método ''​otherwise''​.
  
 El método ''​otherwise''​ acepta un único parámetro con un objeto, teniendo el objeto la propiedad ''​redirectTo''​ con el path de la ruta a la que se navegará. El método ''​otherwise''​ acepta un único parámetro con un objeto, teniendo el objeto la propiedad ''​redirectTo''​ con el path de la ruta a la que se navegará.
Línea 70: Línea 70:
 Ya hemos visto cómo definir las rutas pero nos falta una cosa por especificar , ¿en qué parte de la página principal se carga la página HTML de cada ruta? Podríamos pensar que la página cargada ocupará toda la página principal,​pero,​ aunque podría hacerse, no es lo normal. ​ Ya hemos visto cómo definir las rutas pero nos falta una cosa por especificar , ¿en qué parte de la página principal se carga la página HTML de cada ruta? Podríamos pensar que la página cargada ocupará toda la página principal,​pero,​ aunque podría hacerse, no es lo normal. ​
  
-Si miramos las capturas de pantalla de gmail, la parte izquierda y la superior no cambian en cada ruta por lo que todo ese HTML debería estar en la página principal. Por lo tanto, cada página de la ruta solo se debería cargar en , por ejemplo, un tag ''<​div>''​ que habilitáramos para ello. La forma de decirle a Angular dónde tiene que cargar la página HTML de la ruta es simplemente añadiendo la directiva [[https://​docs.angularjs.org/​api/​ngRoute/​directive/​ngView|ng-view]] al elemento donde quedamos que se cargue.+Si miramos las capturas de pantalla de gmail, la parte izquierda y la superior no cambian en cada ruta por lo que todo ese HTML debería estar en la página principal. Por lo tanto, cada página de la ruta solo se debería cargar en  un tag, por ejemplo''<​div>''​que habilitáramos para ello. La forma de decirle a Angular dónde tiene que cargar la página HTML de la ruta es simplemente añadiendo la directiva [[https://​docs.angularjs.org/​api/​ngRoute/​directive/​ngView|ng-view]] al elemento donde quedamos que se cargue.
  
 Veamos un ejemplo: Veamos un ejemplo:
Línea 86: Línea 86:
  
 <​body>​ <​body>​
-  <h1>Este es el titulo y no cambia</​h1>​+  <h1>éste es el titulo y no cambia</​h1>​
  
   <div ng-view></​div>​   <div ng-view></​div>​
  
-  <h3>Esto es un pie y no cambia</​h3>​+  <h3>ésto es un pie y no cambia</​h3>​
  
 </​body>​ </​body>​
Línea 98: Línea 98:
  
   * Líneas 5, 6, 7 y 8: Cargamos una única vez todo el JavaScript y así ahorramos tiempo al no tener que volver a cargarlo en cada nueva ruta a la que naveguemos.   * Líneas 5, 6, 7 y 8: Cargamos una única vez todo el JavaScript y así ahorramos tiempo al no tener que volver a cargarlo en cada nueva ruta a la que naveguemos.
-  * Línea 12: Esta es la cabecera de la aplicación y como no cambia entre las distintas páginas la ponemos en la página principal.+  * Línea 12: Ésta es la cabecera de la aplicación y como no cambia entre las distintas páginas la ponemos en la página principal.
   * Línea 14: En este ''<​div>''​ al incluir la directiva ''​ng-view''​ es donde se cargarán las páginas HTML de las rutas.   * Línea 14: En este ''<​div>''​ al incluir la directiva ''​ng-view''​ es donde se cargarán las páginas HTML de las rutas.
-  * Línea 16: Este es el pie de la aplicación y como no cambia entre las distintas páginas lo ponemos en la página principal.+  * Línea 16: Éste es el pie de la aplicación y como no cambia entre las distintas páginas lo ponemos en la página principal.
  
 ===== Navegando ===== ===== Navegando =====
Línea 138: Línea 138:
    ​$scope.irPagina1 = function () {    ​$scope.irPagina1 = function () {
       $location.path("/​pagina1"​);​       $location.path("/​pagina1"​);​
-   ​}; ​  ​+   ​}; ​ 
        
 }]); }]);
Línea 183: Línea 183:
  
 ===== Alternativa:​ ui-router ===== ===== Alternativa:​ ui-router =====
-Acabamos de ver el funcionamiento básico de las rutas en AngularJS 1.2 y en los siguientes temas veremos ​mas funcionalidades del módulo de rutas de AngularJS 1.2. Sin embargo, el módulo de rutas de AngularJS 1.2 tiene una funcionalidad muy básica. En aplicaciones reales no deberíamos usarlo y como substituto //de facto// está el proyecto [[https://​github.com/​angular-ui/​ui-router|UI Router]]. [[https://​github.com/​angular-ui/​ui-router|UI Router]] tiene muchas ​mas funcionalidades y debe ser nuestra primera elección como servicio de rutas. ​+Acabamos de ver el funcionamiento básico de las rutas en AngularJS 1.2 y en los siguientes temas veremos ​más funcionalidades del módulo de rutas de AngularJS 1.2. Sin embargo, el módulo de rutas de AngularJS 1.2 tiene una funcionalidad muy básica. En aplicaciones reales no deberíamos usarlo y como substituto //de facto// está el proyecto [[https://​github.com/​angular-ui/​ui-router|UI Router]]. [[https://​github.com/​angular-ui/​ui-router|UI Router]] tiene muchas ​más funcionalidades y debe ser nuestra primera elección como servicio de rutas. ​
  
  
-El equipo de AngularJs tiene pensado mejorar el servicio de rutas para AngularJS 2.0 pero la versión 2.0 aún queda muy lejos en el tiempo por lo que no es una opcióntodavía ​pero en el momento de escribir este curso [[https://​twitter.com/​bradlygreen/​|Brad Green]] , un desarrollador de AngularJS, ​ve [[https://​twitter.com/​bradlygreen/​status/​494959485488594944|twittear]] que piensan añadir a Angular 1.3 el sistema de rutas de Angular 2.0 por lo que dentro de poco tendremos un servicio de rutas adecuando ​en AngularJS y no será necesario [[https://​github.com/​angular-ui/​ui-router|UI Router]].+El equipo de AngularJs tiene pensado mejorar el servicio de rutas para AngularJS 2.0 pero la versión 2.0 aún queda muy lejos en el tiempo por lo que no es una opción todavía ​pero en el momento de escribir este curso [[https://​twitter.com/​bradlygreen/​|Brad Green]] , un desarrollador de AngularJS,​[[https://​twitter.com/​bradlygreen/​status/​494959485488594944|twitteó]] que piensan añadir a Angular 1.3 el sistema de rutas de Angular 2.0 por lo que dentro de poco tendremos un servicio de rutas adecuado ​en AngularJS y no será necesario [[https://​github.com/​angular-ui/​ui-router|UI Router]].
  
 Por todo ello he decidido no contar [[https://​github.com/​angular-ui/​ui-router|UI Router]] ya que dentro de poco no será tan necesario al tener ya un servicio de rutas adecuado en AngularJS 1.3. Así que me he centrado en contar el sistema actual que es bastante sencillo, a sabiendas de que cuando salga AngularJS 1.3 deberías aprender el nuevo servicio de rutas. Por todo ello he decidido no contar [[https://​github.com/​angular-ui/​ui-router|UI Router]] ya que dentro de poco no será tan necesario al tener ya un servicio de rutas adecuado en AngularJS 1.3. Así que me he centrado en contar el sistema actual que es bastante sencillo, a sabiendas de que cuando salga AngularJS 1.3 deberías aprender el nuevo servicio de rutas.
Línea 192: Línea 192:
  
 <note tip> <note tip>
-Si tienes que hacer ahora un proyecto real usa [[https://​github.com/​angular-ui/​ui-router|UI Router]] pero si puedes esperar a AngularJS 1.mejor usa su servicio de rutas.+Si tienes que hacer ahora un proyecto real usa [[https://​github.com/​angular-ui/​ui-router|UI Router]] pero si puedes esperar a AngularJS 1.4 (el 5 de Marzo de 2015) mejor usa su servicio de rutas. 
 +</​note>​ 
 + 
 +<note warning>​ 
 +**Actualización 20/​10/​2014.** 
 + 
 +Hace unos días se ha publicado la versión 1.3 de AngularJS y no tiene el nuevo sistema de rutas así que tendremos que esperar a AngularJS 2.0 para verlo. Por lo tanto recuerda en proyectos reales usar [[https://​github.com/​angular-ui/​ui-router|UI Router]] 
 +</​note>​ 
 + 
 +<note warning>​ 
 +**Actualización 28/​10/​2014** 
 + 
 +Vuelve a haber nuevas noticias sobre éste tema.En las conferencias de  [[http://​ngeurope.org/​|ng-europe]] ((la conferencia europea sobre AngularJS)),​ hubo una charla el 24/10/2014 titulada [[http://​ng-workshop.com/​en/​article/​new-router-angularjs-ng-europe-2014|The new Router for AngularJS]],​ en ella se dijo que el nuevo sistema de rutas será portado a AngularJS 1.3. 
 + 
 +</​note>​ 
 + 
 +<note warning>​ 
 +**Actualización 15/​12/​2014** 
 + 
 +Mas noticias sobre éste tema.En el blog de AngularJS se ha publicado el [[http://​angularjs.blogspot.com.es/​2014/​12/​planning-angular-14.html|plan para Angular 1.4]] e incluye el nuevo sistema de rutas!!!! La versión estará para el 5 de Marzo de 2015 coincidiendo con la [[http://​www.ng-conf.org/​|ng-conf]] 
 </​note>​ </​note>​
 ===== Ejemplo ===== ===== Ejemplo =====
Línea 210: Línea 230:
  
 <​body>​ <​body>​
-  <h1>Este es el título y no cambia</​h1>​+  <h1>Éste es el título y no cambia</​h1>​
   <ul>   <ul>
     <​li><​a href="#​pagina1">​Ir a la pagina 1</a>     <​li><​a href="#​pagina1">​Ir a la pagina 1</a>
Línea 221: Línea 241:
   <div ng-view></​div>​   <div ng-view></​div>​
  
-  <h3>Esto es un pie y no cambia</​h3>​+  <h3>Ésto es un pie y no cambia</​h3>​
  
 </​body>​ </​body>​
unidades/07_rutas/02_routeprovider.1409611696.txt.gz · Última modificación: 2014/09/02 00:48 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