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


82

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

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

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

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

Благодарю.



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
Это должно быть правдой или ложью.
Родриго Оливейра

Пол, какой у тебя объект?
Родриго Оливейра
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.