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.



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>

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;

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.