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.

Paul Haggo
fuente
Relacionado: stackoverflow.com/questions/14164371/…
Robert Harvey
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>
Conejito gruff
fuente
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;
Paul Haggo
fuente
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 .

Rodrigo Oliveira
fuente
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