Ein- / Ausblenden, wenn die Variable null ist

82

Ich möchte ein Div ein- / ausblenden, basierend darauf, ob eine Variable null ist oder nicht.

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

Hinweis: Die Variable ist in meinem Fall ein Objekt.

Eine sehr einfache Frage, aber ich kann nicht scheinen, dass es funktioniert.

Vielen Dank.

Paul Haggo
quelle
Siehe auch
Robert Harvey
myvar == null vielleicht
Gruff Bunny
2
Welche Nicht-Null-Werte werden angenommen myvar? ng-showzeigen für jeden truthy Wert, so lange , wie myvarnicht false, null, undefined, 0, die leere Zeichenkette oder NaNsollte es funktionieren. Bitte posten Sie etwas mehr Code für den Kontext.
Philipp Reichart
Zur Verdeutlichung funktioniert das obige Beispiel, mein Code hat aus nicht verwandten Gründen nicht funktioniert. Wenn mylar false, null oder noch nie zuvor verwendet wurde (dh $ scope.myvar oder $ rootScope.myvar wurden nie aufgerufen), wird das div nicht angezeigt. Sobald ihm ein Wert zugewiesen wurde, wird das div angezeigt, es sei denn, der Wert ist spezifisch falsch.
Paul Haggo

Antworten:

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

oder

<div ng-show="myvar != null"></div>
Gruff Bunny
quelle
16
Es ist eine gute Praxis, <div ng-hide="myvar == null"></div>statt zu verwenden <div ng-show="myvar != null"></div>. Es ist besser lesbar.
Maicher
12
@maicher Das hängt wirklich vom Kontext ab
Petr Peller
übersetzt ng-show den Ausdruck als $scope.myvar != $scope.nulloder $scope.myvar != null? ( Gepostete Frage hier stackoverflow.com/questions/31387397 )
jperelli
Angular verwendet das Javascript null. Sie möchten sowieso nicht anfangen, null zum Gültigkeitsbereich hinzuzufügen, da null immer null sein sollte (plus Angle ignoriert den $ scope.null, wenn er in einem Ausdruck verwendet wird).
Gruff Bunny
20

Zur Verdeutlichung funktioniert das obige Beispiel. Mein Code im Beispiel hat aus nicht verwandten Gründen nicht funktioniert.

Wenn myvar false, null oder noch nie zuvor verwendet wurde (dh $ scope.myvar oder $ rootScope.myvar wurden nie aufgerufen), wird div nicht angezeigt. Sobald ihm ein Wert zugewiesen wurde, wird das div angezeigt, es sei denn, der Wert ist spezifisch falsch.

Folgendes führt dazu, dass das div angezeigt wird:

$scope.myvar = "Hello World";

oder

$scope.myvar = true;

Folgendes wird das div verbergen:

$scope.myvar = null;

oder

$scope.myvar = false;
Paul Haggo
quelle
2

In diesem Fall sollte myvar ein boolescher Wert sein. Wenn diese Variable wahr ist, wird das div angezeigt, wenn es falsch ist. Es wird ausgeblendet.

Überprüfen Sie dies heraus.

Rodrigo Oliveira
quelle
Wollen Sie damit sagen, dass es nur funktioniert, wenn myvares boolesch ist?
Robert Harvey
Ich möchte eine Lösung finden, bei der myvar ein Objekt ist. Vielen Dank.
Paul Haggo
1
Es sollte wahr oder falsch sein.
Rodrigo Oliveira
Paul, was ist dein Objekt zurück?
Rodrigo Oliveira