Posso de alguma forma usar a construção if-then-else (operador ternário) na expressão angularjs, por exemplo, tenho a função $ scope.isExists (item) que deve retornar o valor bool. Eu quero algo assim,
<div ng-repeater="item in items">
<div>{{item.description}}</div>
<div>{{isExists(item) ? 'available' : 'oh no, you don't have it'}}</div>
</div>
Eu sei que posso usar uma função que retorna string, estou interessado na possibilidade de usar a construção if-then-else na expressão. Obrigado.
ng-switch
Respostas:
As expressões angulares não suportam o operador ternário antes de 1.1.5, mas pode ser emulado assim:
Então, por exemplo, algo assim funcionaria:
ATUALIZAÇÃO: Angular 1.1.5 adicionou suporte para operadores ternários:
fonte
<
e>
como operadores de comparação?Você pode usar o operador ternário desde a versão 1.1.5 e acima como demonstrado neste pequeno êmbolo (exemplo em 1.1.5):
Por motivos de história (talvez plnkr.co baixe por algum motivo no futuro) aqui está o código principal do meu exemplo:
fonte
{{true?true:false}}
Você pode usar facilmente o ng-show, como:
Para testes mais complexos, você pode usar as instruções ng-switch:
fonte
Isso pode ser feito em uma linha.
Uso em uma
td
tag:fonte