Jak pokazać / ukryć, jeśli zmienna ma wartość null

82

Chcę pokazać / ukryć div na podstawie tego, czy zmienna ma wartość null, czy nie.

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

Uwaga: zmienną w moim przypadku jest obiekt.

Bardzo proste pytanie, ale nie wydaje mi się, żeby to zadziałało.

Dzięki.

Paul Haggo
źródło
Związane z: stackoverflow.com/questions/14164371/…
Robert Harvey
myvar == null prawdopodobnie
Gruff Bunny
2
Jakie myvarprzyjmuje się wartości inne niż null ? ng-showpokaże na każdym truthy wartości, tak długo jak myvarnie jest false, null, undefined, 0, lub pusty ciąg znaków NaNto powinno działać. Napisz więcej kodu kontekstowego.
Philipp Reichart
Aby wyjaśnić, powyższy przykład działa, mój kod nie działał z niepowiązanych powodów. Jeśli mylar ma wartość false, null lub nigdy wcześniej nie był używany (tj. $ Scope.myvar lub $ rootScope.myvar nigdy nie był wywoływany), element div nie zostanie wyświetlony. Po przypisaniu do niego jakiejkolwiek wartości element div zostanie wyświetlony, chyba że wartość jest konkretnie fałszywa.
Paul Haggo,

Odpowiedzi:

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

lub

<div ng-show="myvar != null"></div>
Gruff Bunny
źródło
16
Dobrą praktyką jest używanie <div ng-hide="myvar == null"></div>zamiast <div ng-show="myvar != null"></div>. Jest bardziej czytelny.
maicher
12
@maicher To naprawdę zależy od kontekstu
Petr Peller,
czy ng-show tłumaczy wyrażenie jako $scope.myvar != $scope.nulllub $scope.myvar != null? (pytanie opublikowane tutaj stackoverflow.com/questions/31387397 )
jperelli
Angular użyje javascript null. Naprawdę nie chcesz i tak zaczynać dodawania null do zakresu, ponieważ null powinno zawsze wynosić null (plus angular zignoruje $ scope.null it jeśli zostanie użyty w wyrażeniu).
Gruff Bunny
20

Aby wyjaśnić, powyższy przykład działa, mój kod w przykładzie nie działał z niepowiązanych powodów.

Jeśli myvar ma wartość false, null lub nigdy wcześniej nie był używany (tj. $ Scope.myvar lub $ rootScope.myvar nigdy nie został wywołany), element div nie zostanie wyświetlony. Po przypisaniu dowolnej wartości element div zostanie wyświetlony, chyba że wartość jest konkretnie fałszywa.

Następujące elementy spowodują wyświetlenie elementu DIV:

$scope.myvar = "Hello World";

lub

$scope.myvar = true;

Poniższe elementy spowodują ukrycie elementu div:

$scope.myvar = null;

lub

$scope.myvar = false;
Paul Haggo
źródło
2

W takim przypadku myvar powinna być wartością logiczną. Jeśli ta zmienna jest prawdziwa, pokaże div, jeśli jest fałszywa. Ukryje się.

Spójrz na to .

Rodrigo Oliveira
źródło
Więc mówisz, że zadziała tylko wtedy, gdy myvarjest logiczna?
Robert Harvey
Chcę znaleźć rozwiązanie, w którym myvar jest obiektem. Dzięki.
Paul Haggo
1
Powinien być prawdziwy lub fałszywy.
Rodrigo Oliveira
Paul, jaki jest twój przedmiot wraca?
Rodrigo Oliveira