Возможны ли сложные выражения в 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'"