¡Esta es una revisión vieja del documento!
En este tema retornamos el ejemplo del seguro médico para añadir varias de las directivas que hemos visto.
La lista de modificaciones a realizar es la siguiente:
ng-options
ng-include
.ng-src
remoteResource
el obtener una lista de seguros médicos ng-repeat
para crear la tablang-bind
ng-href
ng-class
ng-switch
para mostrar el nombre del sexo en la tabla
En el tag <select>
vamos a usar la directiva ng-options
.
Lo primero es incluir en el $scope
la propidad sexos
con los posibles valores del <select>
.
1 2 3 4 5 6 7 8 9 | $scope.sexos= [ { codSexo: "H" , descripcion: "Hombre" },{ codSexo: "M" , descripcion: "Mujer" } ]; |
Y modificar el <select>
de la siguiente forma para incluir ng-options
:
1 | < select id = "sexo" name = "sexo" type = "checkbox" ng-model = "seguro.sexo" ng-options = "sexo.codSexo as sexo.descripcion for sexo in sexos" >< option value = "" >--Elige opcion--</ option ></ select > |
Vamos a añadir una cabecera y un pie en ficheros separados para que luego estos ficheros se puedan reusar en otras páginas y para que el código sea más ordenado.
1 | < div >© Seguros medicos S.A.</ div > |
1 2 3 | < div > < h1 >< img ng-src = "{{urlLogo}}" /> Seguro medico</ h1 > </ div > |
urlLogo
del $scope
.
Así que añadimos la propiedad al $scope
Ahora en la página index.html
añadimos los ng-include
al pie y a la cabecera:
1 2 3 4 5 6 7 8 9 | < body ng-controller = "SeguroController" > < ng-include src = "'cabecera.html'" ></ ng-include > < form > </ form > < ng-include src = "'pie.html'" ></ ng-include > </ body > |
<form>
ni del tag <head>
para mejorar la legibilidad
Vamos a añadir el método list
al servicio remoteResource
para poder obtener una lista de seguros médicos.
Los datos como en el caso del método get
se van a obtener de un fichero estático en formato JSON llamado listado_seguros.json
Un fragmento del fichero es el siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | [{ "nif" : "12345678Z" , "nombre" : "Carlos" , "ape1" : "Cano" , "edad" : 41, "sexo" : "H" , "casado" : true , "numHijos" : 3, "embarazada" : false , "coberturas" : { "oftalmologia" : true , "dental" : false , "fecundacionInVitro" : false }, "enfermedades" : { "corazon" : true , "estomacal" : false , "rinyones" : false , "alergia" : true , "nombreAlergia" : "Acaros" } }, { "nif" : "34783627Z" , "nombre" : "Catalina" , "ape1" : "López" , "edad" : 33, "sexo" : "M" , "casado" : true , "numHijos" : 1, "embarazada" : true , "coberturas" : { "oftalmologia" : false , "dental" : false , "fecundacionInVitro" : false }, "enfermedades" : { "corazon" : false , "estomacal" : false , "rinyones" : false , "alergia" : false , "nombreAlergia" : "" } }, { "nif" : "29069345J" , "nombre" : "Jose" , "ape1" : "Aguado" , "edad" : 56, "sexo" : "H" , "casado" : true , "numHijos" : 2, "embarazada" : false , "coberturas" : { "oftalmologia" : true , "dental" : true , "fecundacionInVitro" : false }, "enfermedades" : { "corazon" : true , "estomacal" : true , "rinyones" : true , "alergia" : false , "nombreAlergia" : "" } }] |
Vemos que ahora en vez de ser un objeto JSON es un array JSON ya que empieza por ”[” y acaba por ”]” y dentro hay varios objetos separados por comas.
La modificación del servicio es muy sencilla ya que solo hay que añadir un nuevo método que es prácticamente igual al que ya había.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | function RemoteResource($http,baseUrl) { this .get= function (fnOK,fnError) { $http({ method: 'GET' , url: baseUrl+ '/datos.json' }).success( function (data, status, headers, config) { fnOK(data); }).error( function (data, status, headers, config) { fnError(data,status); }); } this .list= function (fnOK,fnError) { $http({ method: 'GET' , url: baseUrl+ '/listado_seguros.json' }).success( function (data, status, headers, config) { fnOK(data); }).error( function (data, status, headers, config) { fnError(data,status); }); } } |
list
. La única diferencia por ahora con el método get
es que el fichero que obtiene se llama listado_seguros
.
En cada uno de los controladores habría que poner en su $scope
la propiedad urlLogo
con la URL de la imagen.
Para evitar hacerlo en todos los controladores lo ponemos únicamente en el $rootScope
y además usamos una contante para guardar su valor.
1 2 3 4 | app.value( "urlLogo" , "http://www.cursoangularjs.es/lib/exe/fetch.php?cache=&media=unidades:04_masdirectivas:medical14.png" ); app.run([ "$rootScope" , "urlLogo" , function ($rootScope,urlLogo) { $rootScope.urlLogo=urlLogo; }]); |
Ahora juntamos todos los cambios en el siguiente ejemplo.