unidades:07_rutas:05_ejemploseguro
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| unidades:07_rutas:05_ejemploseguro [2014/08/27 09:38] – admin | unidades:07_rutas:05_ejemploseguro [2014/09/16 19:33] (actual) – admin | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| - | ====== Ejemplo de rutas ====== | + | ====== |
| + | En este tema retornamos el ejemplo del seguro médico para añadir el servicio de rutas y de paso hacer otros cambios que ya podemos hacer. | ||
| + | La lista de modificaciones a realizar es la siguiente: | ||
| + | * Añadir a los datos JSON otra propiedad llamada '' | ||
| + | * Hacer que el método '' | ||
| + | * Nueva página '' | ||
| + | * Navegar entre páginas usando las rutas. | ||
| + | * Quitar de las páginas la cabecera y el pie ya que ahora sólo están en la página '' | ||
| + | * Permitir ir desde el lista de seguros al detalle de cada seguro. | ||
| + | * Cargar los datos del listado desde el '' | ||
| + | * Cargar los datos del detalle desde el '' | ||
| + | |||
| + | ===== Añadir a los datos JSON otra propiedad llamada idSeguro ===== | ||
| + | Ahora el formato de los datos JSON es el siguiente: | ||
| + | <sxh js> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Hemos hecho este cambio ya que ahora se podrán obtener los datos de un seguro concreto usando la propiedad '' | ||
| + | |||
| + | ===== Hacer que el método get del servicio remoteResource acepte como argumento el idSeguro ===== | ||
| + | Ahora, en vez de tener un solo fichero llamado '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * Etc. | ||
| + | |||
| + | Éso nos permite que desde el método '' | ||
| + | |||
| + | El método '' | ||
| + | <sxh js; | ||
| + | this.get = function(idSeguro) { | ||
| + | var defered=$q.defer(); | ||
| + | var promise=defered.promise; | ||
| + | | ||
| + | $http({ | ||
| + | method: ' | ||
| + | url: baseUrl + '/ | ||
| + | }).success(function(data, | ||
| + | defered.resolve(data); | ||
| + | }).error(function(data, | ||
| + | defered.reject(status); | ||
| + | }); | ||
| + | | ||
| + | return promise; | ||
| + | | ||
| + | } | ||
| + | </ | ||
| + | * Línea 1: Ahora aceptamos el parámetro '' | ||
| + | * Línea 7: Al obtener los datos , obtenemos del fichero que los tiene sólo los datos que queremos. | ||
| + | |||
| + | <note tip> | ||
| + | Recuerda que la forma de obtener los datos por ahora es temporal. Ya veremos más adelante REST y la parte servidora y cambiaremos la parte de la URL del '' | ||
| + | </ | ||
| + | |||
| + | ===== Nueva página main.html ===== | ||
| + | Al añadir la rutas, la página '' | ||
| + | |||
| + | El contenido de esta página es solamente el enlace para mostrar '' | ||
| + | |||
| + | <sxh html; | ||
| + | <a href="#/ | ||
| + | </ | ||
| + | |||
| + | A la página '' | ||
| + | |||
| + | |||
| + | ===== Navegar entre páginas usando las rutas ===== | ||
| + | Ahora vamos a añadir las rutas para poder navegar a las 3 páginas: | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | <sxh js> | ||
| + | app.config([' | ||
| + | |||
| + | $routeProvider.when('/', | ||
| + | templateUrl: | ||
| + | controller: " | ||
| + | }); | ||
| + | |||
| + | $routeProvider.when('/ | ||
| + | templateUrl: | ||
| + | controller: " | ||
| + | }); | ||
| + | |||
| + | $routeProvider.when('/ | ||
| + | templateUrl: | ||
| + | controller: " | ||
| + | }); | ||
| + | |||
| + | $routeProvider.otherwise({ | ||
| + | redirectTo: '/' | ||
| + | }); | ||
| + | |||
| + | }]); | ||
| + | </ | ||
| + | |||
| + | Hemos creado las 3 rutas para las 3 páginas. | ||
| + | |||
| + | El path de la ruta de '' | ||
| + | |||
| + | También en el path de la ruta de '' | ||
| + | |||
| + | Al añadir las rutas hemos tenido que hacer otros 2 cambios: | ||
| + | * Incluir el fichero JavaScript '' | ||
| + | |||
| + | <sxh html> | ||
| + | <script src='// | ||
| + | </ | ||
| + | |||
| + | * Hacer que el módulo de la aplicación dependa del módulo '' | ||
| + | |||
| + | <sxh js> | ||
| + | var app = angular.module(" | ||
| + | </ | ||
| + | ===== Quitar de las páginas la cabera y el pie ya que ahora sólo están en la página index.html. ===== | ||
| + | Ahora ya no es necesario incluir la cabecera ni el pie en '' | ||
| + | |||
| + | En '' | ||
| + | |||
| + | <sxh html; | ||
| + | < | ||
| + | <html ng-app=" | ||
| + | |||
| + | < | ||
| + | <script src="// | ||
| + | <script src='// | ||
| + | <script src="// | ||
| + | <script src=" | ||
| + | </ | ||
| + | |||
| + | <body ng-controller=" | ||
| + | |||
| + | < | ||
| + | |||
| + | <div ng-view></ | ||
| + | |||
| + | < | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | * Línea 15: Hemos añadido la directiva '' | ||
| + | |||
| + | ===== Permitir ir desde el lista de seguros al detalle de cada seguro ===== | ||
| + | Como ya tenemos rutas y parámetros, | ||
| + | |||
| + | Para ello sólo hemos añadido un link con la ruta correspondiente a '' | ||
| + | |||
| + | <sxh html; | ||
| + | |||
| + | Filtrar por apellido:< | ||
| + | |||
| + | < | ||
| + | < | ||
| + | <tr> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </tr> | ||
| + | </ | ||
| + | < | ||
| + | <tr> | ||
| + | <td colspan=" | ||
| + | <td ng-bind=" | ||
| + | </tr> | ||
| + | </ | ||
| + | < | ||
| + | <tr ng-repeat=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <td ng-switch on=" | ||
| + | <span ng-switch-when=" | ||
| + | <span ng-switch-when=" | ||
| + | <span ng-switch-when=""></ | ||
| + | <span ng-switch-default> | ||
| + | </td> | ||
| + | </tr> | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | * Línea 20: El link ahora apunta a la ruta ''/ | ||
| + | |||
| + | ===== Cargar los datos del listado desde el '' | ||
| + | Para evitar que al aparecer la página de listado un instante después aparezca la tabla con los datos, vamos a obtener los datos en el '' | ||
| + | |||
| + | Para ello hemos modificado la definición de la ruta de la siguiente forma: | ||
| + | <sxh js; | ||
| + | $routeProvider.when('/ | ||
| + | templateUrl: | ||
| + | controller: " | ||
| + | resolve: { | ||
| + | seguros: | ||
| + | return remoteResource.list(); | ||
| + | }] | ||
| + | } | ||
| + | }); | ||
| + | </ | ||
| + | * Línea 4: Se añade la propiedad '' | ||
| + | * Línea 5: Se inyecta el servicio '' | ||
| + | * Línea 6: Aquí es donde se llama para obtener los datos y se retorna la promesa. | ||
| + | |||
| + | |||
| + | Ahora en el controlador ya no es necesario que llamemos a '' | ||
| + | |||
| + | <sxh js; | ||
| + | app.controller(" | ||
| + | $scope.seguros = seguros; | ||
| + | }]); | ||
| + | </ | ||
| + | * Línea 1: Inyectamos el // | ||
| + | * Línea 2: Ahora simplemente los guardamos en el '' | ||
| + | |||
| + | Como ya tenemos el array con todos los datos, en cuanto se muestre la página ya se verá la tabla con toda la información. | ||
| + | |||
| + | <note tip> | ||
| + | Compara ahora este ejemplo del seguro con el de la unidad anterior y verás la diferencia. | ||
| + | </ | ||
| + | |||
| + | ===== Cargar los datos del detalle desde el '' | ||
| + | Para evitar que al aparecer la página de detalle , aparezcan los datos en los campos un instante después, vamos a obtener los datos en el resolve de la ruta. | ||
| + | |||
| + | Para ello hemos modificado la definición de la ruta de la siguiente forma: | ||
| + | <sxh js> | ||
| + | $routeProvider.when('/ | ||
| + | templateUrl: | ||
| + | controller: " | ||
| + | resolve: { | ||
| + | seguro: | ||
| + | return remoteResource.get($route.current.params.idSeguro); | ||
| + | }] | ||
| + | } | ||
| + | }); | ||
| + | </ | ||
| + | |||
| + | Línea 4: Se añade la propiedad '' | ||
| + | Línea 5: Se inyecta el servicio '' | ||
| + | Línea 6: Aquí es donde se llama para obtener los datos y se retorna la promesa.Vemos que al método '' | ||
| + | |||
| + | |||
| + | Ahora en el controlador ya no es necesario que llamemos a remoteResource.get() sino que sólo hay que inyectar '' | ||
| + | |||
| + | |||
| + | <sxh js; | ||
| + | app.controller(" | ||
| + | |||
| + | $scope.filtro = { | ||
| + | ape1: "" | ||
| + | } | ||
| + | |||
| + | $scope.sexos = [{ | ||
| + | codSexo: " | ||
| + | descripcion: | ||
| + | }, { | ||
| + | codSexo: " | ||
| + | descripcion: | ||
| + | }]; | ||
| + | |||
| + | |||
| + | $scope.seguro = { | ||
| + | nif: "", | ||
| + | nombre: "", | ||
| + | ape1: "", | ||
| + | edad: undefined, | ||
| + | sexo: "", | ||
| + | casado: false, | ||
| + | numHijos: undefined, | ||
| + | embarazada: false, | ||
| + | coberturas: { | ||
| + | oftalmologia: | ||
| + | dental: false, | ||
| + | fecundacionInVitro: | ||
| + | }, | ||
| + | enfermedades: | ||
| + | corazon: false, | ||
| + | estomacal: false, | ||
| + | rinyones: false, | ||
| + | alergia: false, | ||
| + | nombreAlergia: | ||
| + | }, | ||
| + | fechaCreacion: | ||
| + | } | ||
| + | |||
| + | $scope.seguro = seguro; | ||
| + | |||
| + | |||
| + | }]); | ||
| + | </ | ||
| + | Línea 1: Inyectamos el // | ||
| + | Línea 40: Ahora simplemente los guardamos en el $scope y se mostrarán en el formulario HTML. | ||
| + | |||
| + | Como ya tenemos el objeto con todos los datos, en cuanto se muestre la página ya se verá toda la información en el formulario . | ||
| + | |||
| + | <note important> | ||
| + | |||
| + | |||
| + | |||
| + | |||
| ===== Ejemplo ===== | ===== Ejemplo ===== | ||
| + | <note important> | ||
| {{url> | {{url> | ||
unidades/07_rutas/05_ejemploseguro.1409125116.txt.gz · Última modificación: por admin
