Як показати / приховати, якщо змінна має значення 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.