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.