attributes - template - touch form angularjs




As expressões complexas são possíveis em ng-hide/ng-show? (4)

Algumas dessas respostas acima não funcionaram para mim, mas isso aconteceu. Apenas no caso de alguém ter o mesmo problema.

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

Eu quero fazer isso:

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

mas a expressão é sempre avaliada como false .

Eu não quero definir função especial no $scope .


Eu geralmente tento evitar expressões com ng-show e ng-hide, pois elas foram projetadas como booleanas, não como condicionais. Se eu precisar da lógica condicional e booleana, eu prefiro colocar a lógica condicional usando ng-if como a primeira verificação e, em seguida, adicionar uma verificação adicional para a lógica booleana com ng-show e ng-hide

Howerver, se você quiser usar uma condicional para ng-show ou ng-hide, aqui está um link com alguns exemplos: Display condicional usando ng-if, ng-show, ng-hide, ng-include, ng-switch


Use um método de controlador se você precisar executar código JavaScript arbitrário ou definir um filtro que retorne verdadeiro ou falso.

Eu apenas testei (deveria ter feito isso primeiro), e algo como ng-show="!a && b" funcionou como esperado.


ng-show / ng-hide aceita apenas valores boolean .

Para expressões complexas, é bom usar o controlador e o escopo para evitar complicações.

Abaixo de um vai funcionar (não é expressão muito complexa)

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

Aqui, o elemento será mostrado na interface do usuário quando qualquer uma das duas condições retornar true (operação OR).

Assim você pode usar qualquer expressão.