Se você não deseja colocar nomes de classes CSS no Controller, como eu, aqui está um truque antigo que eu uso desde os dias anteriores à v1. Podemos escrever uma expressão que seja avaliada diretamente em um nome de classe selecionado , nenhuma diretiva personalizada é necessária:
ng:class="{true:'selected', false:''}[$index==selectedIndex]"
Observe a sintaxe antiga com dois pontos.
Há também uma nova maneira melhor de aplicar classes condicionalmente, como:
ng-class="{selected: $index==selectedIndex}"
Angular agora suporta expressões que retornam um objeto. Cada propriedade (nome) deste objeto agora é considerada como um nome de classe e é aplicada dependendo do seu valor.
No entanto, essas maneiras não são funcionalmente iguais. Aqui está um exemplo:
ng-class="{admin:'enabled', moderator:'disabled', '':'hidden'}[user.role]"
Portanto, poderíamos reutilizar as classes CSS existentes, mapeando basicamente uma propriedade de modelo para um nome de classe e, ao mesmo tempo, mantendo as classes CSS fora do código do Controller.