Как показать / скрыть, если переменная равна нулю

82

Я хочу показать / скрыть div в зависимости от того, имеет ли переменная значение NULL или нет.

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

Примечание: переменная в моем случае - это объект.

Очень простой вопрос, но я не могу заставить его работать.

Благодарю.

Пол Хагго
источник
Связанный: stackoverflow.com/questions/14164371/…
Роберт Харви
myvar == null возможно
Gruff Bunny
2
Какие ненулевые значения myvarпредполагаются? ng-showпокажет для любого truthy значения, так как пока myvarне false, null, undefined, 0, пустая строка или NaNона должна работать. Пожалуйста, разместите еще код для контекста.
Филипп Райхарт
Чтобы уточнить, приведенный выше пример действительно работает, мой код не работал по несвязанным причинам. Если mylar имеет значение false, null или никогда раньше не использовался (т.е. $ scope.myvar или $ rootScope.myvar никогда не вызывались), div не будет отображаться. После того, как ему было присвоено какое-либо значение, div будет отображаться, за исключением случаев, когда значение явно ложно.
Пол Хагго

Ответы:

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

или же

<div ng-show="myvar != null"></div>
Грубый кролик
источник
16
Рекомендуется использовать <div ng-hide="myvar == null"></div>вместо <div ng-show="myvar != null"></div>. Это более читабельно.
Maicher
12
@maicher Это действительно зависит от контекста
Петр Пеллер
ng-show переводит выражение как $scope.myvar != $scope.nullили $scope.myvar != null? (разместил вопрос здесь stackoverflow.com/questions/31387397 )
jperelli
Angular будет использовать javascript null. В любом случае вы действительно не хотите начинать добавлять null в область видимости, так как null всегда должен быть нулевым (плюс angular будет игнорировать $ scope.null, если он используется в выражении).
Gruff Bunny
20

Чтобы уточнить, приведенный выше пример действительно работает, мой код в этом примере не работал по не связанным причинам.

Если myvar имеет значение false, null или никогда раньше не использовался (т.е. $ scope.myvar или $ rootScope.myvar никогда не вызывались), div не будет отображаться. После того, как ему было присвоено какое-либо значение, div будет отображаться, за исключением случаев, когда значение явно ложно.

Следующее приведет к отображению div:

$scope.myvar = "Hello World";

или же

$scope.myvar = true;

Следующее скроет div:

$scope.myvar = null;

или же

$scope.myvar = false;
Пол Хагго
источник
2

В этом случае myvar должно быть логическим значением. Если эта переменная истинна, он покажет div, если ложь .. Он скроется.

Проверьте это .

Родриго Оливейра
источник
Так вы говорите, что это будет работать, только если myvarлогическое значение?
Роберт Харви
Я хочу найти решение, в котором myvar является объектом. Благодарю.
Пол Хагго
1
Это должно быть правдой или ложью.
Родриго Оливейра
Пол, какой у тебя объект?
Родриго Оливейра