Чи можливі складні вирази в ng-hid / ng-show?


180

Я хочу зробити це:

ng-hide="!globals.isAdmin && mapping.is_default"

але вираз оцінюється завжди до false.

Я не хочу визначати спеціальну функцію $scope.


1
Цей синтаксис працює для мене, і я його часто використовую. Якщо він оцінює false, можливо, ви захочете ще раз перевірити ці значення. Можливо, що об’єкти " undefined
глобалів

Прочитайте мій коментар нижче відповіді.
Павло

лише підказка - якщо ви замість цього використовуєте метод контролера, ви можете насправді пройти оцінку в налагоджувачі!
Димитрій К

Відповіді:


212

Використовуйте метод контролера, якщо вам потрібно запустити довільний код JavaScript, або ви можете визначити фільтр, який повертав справжній або хибний.

Я щойно тестував (мав би це зробити спочатку), і щось на кшталт ng-show="!a && b"працювало так, як очікувалося.


4
Ти правий. Проблема полягала в тому, що прапор isAdmin був типу 'string', а не 'boolean'.
Павло

121

ng-show/ ng-hideприймає лише booleanзначення.

Для складних виразів добре використовувати контролер та область, щоб уникнути ускладнень.

Нижче буде працювати (Це не дуже складний вираз)

ng-show="User=='admin' || User=='teacher'"

Тут елемент буде показаний в інтерфейсі користувача, коли будь-яка з двох умов повернеться істиною (АБО операція).

Так, ви можете використовувати будь-які вирази.


12

Це спрацює, якщо ви не маєте занадто багато виразів.

Приклад: ng-show="form.type === 'Limited Company' || form.type === 'Limited Partnership'"

Для будь-яких виразів, ніж це, використовуйте контролер.


1
Я не думаю, що ваше твердження є правильним: This will work if you do not have too many expressions.хоча я погоджуюся, що це потрібно робити замість контролера.
Рахул Дезай

7

Я, як правило, намагаюся уникати виразів з ng-show та ng-hid, оскільки вони були розроблені як булеві, а не умовні. Якщо мені потрібна як умовна, так і булева логіка, я вважаю за краще вводити умовну логіку, використовуючи ng-if як першу перевірку, то додаю додаткову перевірку булевої логіки з ng-show та ng-hid

Howerver, якщо ви хочете використовувати умовне для ng-show або ng-hid, ось посилання з деякими прикладами: Умовне відображення за допомогою ng-if, ng-show, ng-hid, ng-include, ng-switch


2

Деякі з цих вище відповідей не спрацювали для мене, але це все-таки було. Про всяк випадок, якщо хтось інший має те саме питання.

ng-show="column != 'vendorid' && column !='billingMonth'"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.