Я хочу сделать так:
ng-hide="!globals.isAdmin && mapping.is_default"
но выражение всегда оценивает false
.
Я не хочу определять специальную функцию на $scope
.
Я хочу сделать так:
ng-hide="!globals.isAdmin && mapping.is_default"
но выражение всегда оценивает false
.
Я не хочу определять специальную функцию на $scope
.
false
, вы можете дважды проверить эти значения. Возможно, что «глобальные» и / или «отображающие» объектыundefined
Ответы:
Используйте метод контроллера, если вам нужно запустить произвольный код JavaScript, или вы можете определить фильтр, который возвращает true или false.
Я только что проверил (должен был сделать это первым), и что-то вроде
ng-show="!a && b"
сработало, как ожидалось.источник
ng-show
/ng-hide
принимает толькоboolean
значения.Для сложных выражений хорошо использовать контроллер и область видимости, чтобы избежать сложностей.
Ниже будет работать (это не очень сложное выражение)
Здесь элемент будет показан в пользовательском интерфейсе, когда любое из двух условий вернет true (операция ИЛИ).
Таким образом, вы можете использовать любые выражения.
источник
Это будет работать, если у вас не слишком много выражений.
Пример:
ng-show="form.type === 'Limited Company' || form.type === 'Limited Partnership'"
Для любых других выражений используйте контроллер.
источник
This will work if you do not have too many expressions.
хотя я согласен, что это должно быть сделано вместо этого в контроллере.Обычно я стараюсь избегать выражений с помощью ng-show и ng-hide, поскольку они были заданы как логические, а не условные выражения. Если мне нужна как условная, так и логическая логика, я предпочитаю использовать условную логику, используя ng-if в качестве первой проверки, а затем добавить дополнительную проверку логической логики с помощью ng-show и ng-hide
Однако, если вы хотите использовать условное выражение для ng-show или ng-hide, вот ссылка с некоторыми примерами: Условное отображение с использованием ng-if, ng-show, ng-hide, ng-include, ng-switch
источник
Некоторые из приведенных выше ответов не сработали для меня, но это сработало. На всякий случай, если у кого-то есть такая же проблема.
источник