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

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

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

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

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

5 ответов


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

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


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

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

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

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

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

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


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

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

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


Я обычно стараюсь избегать выражений с 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


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

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