Возможны ли сложные выражения в ng-hide/ng-show?

Я хочу сделать это:

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

но выражение всегда равно false.

Я не хочу определять специальную функцию на $scope.

Ответ 1

Используйте метод контроллера, если вам нужно запустить произвольный код JavaScript, или вы можете определить фильтр, который вернул true или false.

Я только что тестировал (должен был сделать это первым), и что-то вроде ng-show="!a && b" работал как ожидалось.

Ответ 2

ng-show/ng-hide принимает только значения boolean.

Для сложных выражений полезно использовать контроллер и область действия, чтобы избежать осложнений.

Ниже будет работать (это не очень сложное выражение)

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

Здесь элемент будет отображаться в пользовательском интерфейсе, когда любое из двух условий возвращает true (операция OR).

Подобным образом вы можете использовать любые выражения.

Ответ 3

Это будет работать, если у вас слишком много выражений.

Пример: ng-show="form.type === 'Limited Company' || form.type === 'Limited Partnership'"

Для любых других выражений, чем это, используйте контроллер.

Ответ 4

Обычно я стараюсь избегать выражений с ng-show и ng-hide, поскольку они были спроектированы как булевы, а не условные. Если мне нужна логическая и логическая логика, я предпочитаю вставлять условную логику с помощью ng-if в качестве первой проверки, а затем добавить дополнительную проверку для логической логики с ng-show и ng-hide

Howerver, если вы хотите использовать условное выражение для ng-show или ng-hide, вот ссылка с некоторыми примерами: Условное отображение с использованием ng-if, ng-show, ng-hide, ng-include, ng-switch

Ответ 5

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

ng-show="column != 'vendorid' && column !='billingMonth'"