Herramientas de usuario

Herramientas del sitio


unidades:02_angular:04_formulario

¡Esta es una revisión vieja del documento!


Tabla de Contenidos

2.4 Formulario

Ahora que ya tenemos un conocimiento inicial de angular y ya podemos empezar a hacer un pequeño ejemplo funcional.El objetivo de este tema es crear un formulario de entrada de datos de un hipotético seguro médico.

Modelo

Ya hemos visto la importancia del modelo de datos para AngularJS así que vamos a definir nuestro modelo del ejemplo del seguro médico:


class Seguro
Seguro : String nif
Seguro : String nombre
Seguro : String ape1
Seguro : String ape2
Seguro : int edad
Seguro : Sexo sexo
Seguro : boolean casado
Seguro : int numHijos
Seguro : boolean embarazada
Seguro : Coberturas coberturas
Seguro : Enfermedades enfermedades
Seguro : Date fechaCreacion

class Coberturas
Coberturas : boolean oftalmologia
Coberturas : boolean dental
Coberturas : boolean fecundacionInVitro

class Enfermedades
Enfermedades: boolean corazon
Enfermedades: boolean estomacal
Enfermedades: boolean rinyones
Enfermedades: boolean alergia
Enfermedades: String nombreAlergia

class Sexo <>
Sexo : H
Sexo : M

Coberturas "1"-"1" Seguro
Seguro "1"-"1" Enfermedades
Seguro "*" -- "1" Sexo

<!DOCTYPE html>
<html ng-app="app">
  <head>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.min.js"></script>
    <script src="script.js"></script>
  </head>
  <body ng-controller="SeguroController">
    <form>
      <fieldset>
        <legend>Seguro Médico</legend>
          <label for="nif">NIF:</label><input id="nif" name="nif" type="text" ng-model="seguro.nif" /><br>
          <label for="nombre">Nombre:</label><input id="nombre" name="nombre" type="text" ng-model="seguro.nombre" /><br>
          <label for="ape1">1º Apellido:</label><input id="ape1" name="ape1" type="text" ng-model="seguro.ape1" /><br>
          <label for="edad">Edad:</label><input id="edad" name="edad" type="text" ng-model="seguro.edad" /><br>
          <label for="sexo">Sexo:</label><select id="sexo" name="sexo" type="checkbox" ng-model="seguro.sexo" ><option value="">--Elige opcion--</option><option value="H">Hombre</option><option value="M">Mujer</option></select><br>
          <label for="casado">Casado:</label><input id="casado" name="casado" type="checkbox" ng-model="seguro.casado" /><br>
          <label for="numHijos">Nº Hijos:</label><input id="numHijos" name="numHijos" type="text" ng-model="seguro.numHijos" /><br>
          <label for="embarazada">Embarazada:</label><input id="embarazada" name="embarazada" type="checkbox" ng-model="seguro.embarazada" /><br>
          <label for="fechaCreacion">Fecha de creaci&oacute;n:</label><input id="fechaCreacion" name="fechaCreacion" type="text" ng-model="seguro.fechaCreacion" /><br>
      </fieldset>
      <fieldset>
        <legend>Coberturas</legend>
          <label for="embarazada">Embarazada:</label><input id="embarazada" name="embarazada" type="checkbox" ng-model="seguro.embarazada" /><br>
          <label for="oftalmologia">Oftalmologia:</label><input id="oftalmologia" name="oftalmologia" type="checkbox" ng-model="seguro.coberturas.oftalmologia" /><br>
          <label for="dental">Dental:</label><input id="dental" name="dental" type="checkbox" ng-model="seguro.coberturas.dental" /><br>
          <label for="fecundacionInVitro">Fecundacion In Vitro:</label><input id="fecundacionInVitro" name="fecundacionInVitro" type="checkbox" ng-model="seguro.coberturas.fecundacionInVitro" /><br>
      </fieldset>      
      <fieldset>
      <legend>Enfermedades</legend>
          <label for="corazon">Corazon:</label><input id="corazon" name="corazon" type="checkbox" ng-model="seguro.enfermedades.corazon" /><br>
          <label for="estomacal">Estomacal:</label><input id="estomacal" name="estomacal" type="checkbox" ng-model="seguro.enfermedades.estomacal" /><br>
          <label for="rinyones">Ri&ntilde;ones:</label><input id="rinyones" name="rinyones" type="checkbox" ng-model="seguro.enfermedades.rinyones" /><br>
          <label for="alergia">Alergia:</label><input id="alergia" name="alergia" type="checkbox" ng-model="seguro.enfermedades.alergia" /><br>
          <label for="nombreAlergia">Nombre de la alergia:</label><input id="nombreAlergia" name="nombreAlergia" type="text" ng-model="seguro.enfermedades.nombreAlergia" /><br>
      </fieldset> 
    </form>
  </body>
</html>

  • Linea 15: Se puede ver como hemos usado el tag <select> en vez de un <input>. AngularJS reconoce perfectamente el tag <select> y no hay que hacer nada especial con él 1). Lo que aparece en el atributo value de los tag <option> es lo que se guardará como valor en JavaScript.
  • Linea 16: Al igual que con el <option> ahora hacemos uso de un tag <input> del tipo checkbox. Si lo marcamos en JavaScript se guardará un true y si lo desmarcamos se guardará un false. Es decir que no hace falta hacer nada especial para usar un booleano.

var app=angular.module("app",[]);
 
function SeguroController($scope) {
  $scope.seguro={
    nif:"",
    nombre:"",
    ape1:"",
    edad:undefined,
    sexo:"",
    casado:false,
    numHijos:undefined,
    embarazada:false,
    coberturas: {
      oftalmologia:false,
      dental:false,
      fecundacionInVitro:false
    },
    enfermedades:{
      corazon:false,
      estomacal:false,
      rinyones:false,
      alergia:false,
      nombreAlergia:""
    },
    fechaCreacion:new Date()
  }
}

Ejemplo

1)
Ya veremos que angular tiene una directiva llamada ngOption para evitar poner manualmente los tags <option>.
unidades/02_angular/04_formulario.1405094384.txt.gz · Última modificación: por admin