Como você faz um ternário com o AngularJS (nos modelos)?
Seria bom usar alguns atributos em html (classes e estilo) em vez de criar e chamar uma função do controlador.
fonte
Como você faz um ternário com o AngularJS (nos modelos)?
Seria bom usar alguns atributos em html (classes e estilo) em vez de criar e chamar uma função do controlador.
Atualização : Angular 1.1.5 adicionou um operador ternário , então agora podemos simplesmente escrever
<li ng-class="$first ? 'firstRow' : 'nonFirstRow'">
Se você estiver usando uma versão anterior do Angular, suas duas opções são:
(condition && result_if_true || !condition && result_if_false)
{true: 'result_if_true', false: 'result_if_false'}[condition]
o item 2. acima cria um objeto com duas propriedades. A sintaxe da matriz é usada para selecionar a propriedade com o nome true ou a propriedade com o nome false e retornar o valor associado.
Por exemplo,
<li class="{{{true: 'myClass1 myClass2', false: ''}[$first]}}">...</li>
or
<li ng-class="{true: 'myClass1 myClass2', false: ''}[$first]">...</li>
$ first é definido como true dentro de um ng-repeat para o primeiro elemento, portanto, o acima aplicaria as classes 'myClass1' e 'myClass2' apenas na primeira vez no loop.
Com ng de classe existe uma maneira mais fácil, porém: NG-classe assume uma expressão que deve ser avaliada como um dos seguintes:
Um exemplo de 1) foi dado acima. Aqui está um exemplo de 3, que eu acho que lê muito melhor:
<li ng-class="{myClass: $first, anotherClass: $index == 2}">...</li>
Na primeira vez em um loop ng-repeat, a classe myClass é adicionada. Na terceira vez ($ index começa em 0), a classe anotherClass é adicionada.
ng-style usa uma expressão que deve ser avaliada em um mapa / objeto de nomes de estilos CSS para valores CSS. Por exemplo,
<li ng-style="{true: {color: 'red'}, false: {}}[$first]">...</li>
ng-style
de atualizar, mas parece ser avaliado apenas quando o elemento é renderizado pela primeira vez. (Angular noob aqui)Atualização: o Angular 1.1.5 adicionou um operador ternário, esta resposta está correta apenas nas versões anteriores ao 1.1.5. Para 1.1.5 e posterior, consulte a resposta atualmente aceita.
Antes do Angular 1.1.5:
A forma de um ternário em angularjs é:
Um exemplo seria:
ou:
fonte
Para textos em modelo angular (
userType
é propriedade de $ scope, como $ scope.userType):fonte
Até agora, todos descobrimos que a versão 1.1.5 vem com um ternário adequado na
$parse
função, portanto, use esta resposta como um exemplo de filtro:E então use-o como
fonte
Aí está: o operador ternário foi adicionado ao analisador angular no 1.1.5 ! veja o changelog
Aqui está um violino mostrando o novo operador ternário usado na diretiva da classe ng.
fonte
Embora você possa usar a
condition && if-true-part || if-false-part
sintaxe-em versões mais antigas do angular, o operador ternário usualcondition ? true-part : false-part
está disponível no Angular 1.1.5 e posterior .fonte
O botão alterna e altera o cabeçalho do botão e mostra / oculta o painel div. Veja o Plunkr
fonte