Diferencias

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

Enlace a la vista de comparación

unidades:02_angular:06_ngshow [2014/07/13 18:16]
admin creado
unidades:02_angular:06_ngshow [2014/08/29 20:20] (actual)
admin
Línea 1: Línea 1:
 ====== 2.6 Directiva ng-show ====== ====== 2.6 Directiva ng-show ======
 +La directiva ''​ng-show''​ permite que un elemento de la página se haga visible o invisible en función de cualquier valor del $scope y por lo tanto de nuestro modelo. Es muy similar a la directiva [[unidades:​02_angular:​05_ngdisabled|ng-disabled]] pero en vez de deshabilitar lo que hace es mostrar el elemento si la expresión es ''​true''​ o hacerlo invisible si la expresión es ''​false''​.
  
 +<note tip>
 +La forma que tiene angular de hacer invisible el elemento es incluyendo el estilo CSS de ''​display:​none''​.
 +</​note>​
 +
 +En nuestro ejemplo sólo tiene sentido que esté la cobertura de Fecundación In Vitro si el sexo de la persona es mujer.Así que sólo va a estar visible la cobertura de Fecundación In Vitro si el sexo es "''​M''"​.
 +
 +<sxh html;​title:​index.html;​ highlight: [25];>
 +<​!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="​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 ng-show="​seguro.sexo==='​M'"​ for="​fecundacionInVitro">​Fecundacion In Vitro:</​label><​input ng-show="​seguro.sexo==='​M'"​ 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 ng-disabled="​seguro.enfermedades.alergia===false"​ id="​nombreAlergia"​ name="​nombreAlergia"​ type="​text"​ ng-model="​seguro.enfermedades.nombreAlergia"​ /><​br>​
 +      </​fieldset> ​
 +    </​form>​
 +  </​body>​
 +</​html>​
 +</​sxh>​
 +
 +  * Línea 25: Vemos como tanto al tag ''<​label>''​ como al tag ''<​input>''​ se les ha incluido la directiva ''​ng-show''​ con el valor ''​seguro.sexo==='​M'''​. Por lo tanto esos dos tags sólo se mostrarán cuando el sexo sea "​Mujer"​.
 +
 +<sxh js;​title:​script.js>​
 +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()
 +  }
 +}
 +</​sxh>​
 +
 +El fichero ''​script.js''​ no se ha modificado desde el ejemplo anterior.
 +===== Expresión de la directiva =====
 +La expresión que se puede poner en la directiva es del mismo tipo que  [[unidades:​02_angular:​05_ngdisabled&#​expresion_de_la_directiva|la expresión de la directiva ng-disabled]]
 +
 +<note tip>
 +Recuerda que una referencia completa de lo que se puede poner como expresión está en {{:​unidades:​02_angular:​angular_expressions_cheatsheet.pdf|}}
 +</​note>​
 +===== Reglas de negocio del Interfaz de usuario =====
 +Al igual que con [[unidades:​02_angular:​05_ngdisabled#​reglas_de_negocio_del_interfaz_de_usuario|las reglas de negocio del interfaz de usuario de ng-disabled]] debemos pensar que ahora sólo es necesario indicar cada regla de negocio de interfaz de usuario una única vez y AngularJS llamará a dicha regla cada vez que se modifiquen los datos de los que depende.
 +===== Ejemplo =====
 +
 +{{url>​http://​embed.plnkr.co/​NrM2dR}}
 +
 +===== Referencias =====
 +  * [[https://​docs.angularjs.org/​api/​ng/​directive/​ngShow|ngShow]]
 +  * [[https://​docs.angularjs.org/​guide/​expression|Developer Guide / Expressions]]
 +  * {{:​unidades:​02_angular:​angular_expressions_cheatsheet.pdf|AngularJS Expressions}}
unidades/02_angular/06_ngshow.1405268215.txt.gz · Última modificación: 2014/07/13 18:16 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