Як показати / приховати, якщо змінна має значення null


82

Я хочу показати / приховати div на основі того, чи є змінна нульовою чи ні.

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

Примітка: змінна в моєму випадку - це об’єкт.

Дуже просте запитання, але, здається, я не можу змусити його працювати.

Дякую.



myvar == null можливо
Gruff Bunny

2
Які ненульові значення myvarприймає? ng-showпокаже для будь-якого truthy значення, так як поки myvarНЕ false, null, undefined, 0, порожній рядок або NaNвона повинна працювати. Будь ласка, опублікуйте ще код для контексту.
Філіп Райхарт,

Для уточнення, наведений вище приклад працює, мій код не з незв’язаних причин. Якщо mylar хибний, нульовий або ніколи раніше не використовувався (тобто $ scope.myvar або $ rootScope.myvar ніколи не викликався), div не відображатиметься. Після того, як йому призначено будь-яке значення, div відображатиметься, за винятком випадків, коли значення спеціально хибне.
Paul Haggo,

Відповіді:


200
<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 завжди має бути null (плюс angular буде ігнорувати $ scope.null, якщо використовується у виразі).
Gruff Bunny

20

Для уточнення, наведений вище приклад працює, мій код у прикладі не працював з непов’язаних причин.

Якщо myvar хибний, нульовий або ніколи раніше не використовувався (тобто $ 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.