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.



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>

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;

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 .


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.