Cómo mostrar / ocultar si la variable es nula


82

Quiero mostrar / ocultar un div en función de si una variable es nula o no.

<div ng-show="myvar"></div>

Nota: la variable en mi caso es un objeto.

Una pregunta muy simple, pero parece que no puedo hacer que funcione.

Gracias.



myvar == null quizás
Gruff Bunny

2
¿Qué valores no nulos myvarasume? ng-showmostrará por cualquier Truthy valor, por lo que, siempre y cuando myvarno false, null, undefined, 0, la cadena vacía o NaNque deben trabajar. Publique más código para el contexto.
Philipp Reichart

Para aclarar, el ejemplo anterior funciona, mi código no lo hizo por razones no relacionadas. Si mylar es falso, nulo o nunca se ha utilizado antes (es decir, $ scope.myvar o $ rootScope.myvar nunca se llamaron), el div no se mostrará. Una vez que se le ha asignado cualquier valor, el div se mostrará, excepto si el valor es específicamente falso.
Paul Haggo

Respuestas:


200
<div ng-hide="myvar == null"></div>

o

<div ng-show="myvar != null"></div>

16
Es una buena práctica utilizar en <div ng-hide="myvar == null"></div>lugar de <div ng-show="myvar != null"></div>. Es más legible.
maicher

12
@maicher Eso realmente depende del contexto
Petr Peller

¿ng-show traduce la expresión como $scope.myvar != $scope.nullo $scope.myvar != null? (pregunta publicada aquí stackoverflow.com/questions/31387397 )
jperelli

Angular usará javascript null. Realmente no desea comenzar a agregar nulo al alcance de todos modos, ya que nulo siempre debe ser nulo (más angular ignorará el $ scope.null si se usa en una expresión).
Gruff Bunny

20

Para aclarar, el ejemplo anterior funciona, mi código en el ejemplo no funcionó por razones no relacionadas.

Si myvar es falso, nulo o nunca se ha usado antes (es decir, $ scope.myvar o $ rootScope.myvar nunca llamados), el div no se mostrará. Una vez que se le ha asignado cualquier valor, el div se mostrará, excepto si el valor es específicamente falso.

Lo siguiente hará que se muestre el div:

$scope.myvar = "Hello World";

o

$scope.myvar = true;

Lo siguiente ocultará el div:

$scope.myvar = null;

o

$scope.myvar = false;

2

En este caso, myvar debería ser un valor booleano. Si esta variable es verdadera, mostrará el div, si es falsa. Se ocultará.

Mira esto .


Entonces, ¿estás diciendo que solo funcionará si myvares booleano?
Robert Harvey

Quiero encontrar una solución donde myvar sea un objeto. Gracias.
Paul Haggo

1
Debe ser verdadero o falso.
Rodrigo Oliveira

Paul, ¿cuál es tu objetivo de devolución?
Rodrigo Oliveira
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.