Si no desea poner nombres de clase CSS en el controlador como lo hago yo, aquí hay un viejo truco que uso desde los días anteriores a v1. Podemos escribir una expresión que evalúe directamente a un nombre de clase seleccionado , no se necesitan directivas personalizadas:
ng:class="{true:'selected', false:''}[$index==selectedIndex]"
Tenga en cuenta la sintaxis anterior con dos puntos.
También hay una nueva forma mejor de aplicar clases condicionalmente, como:
ng-class="{selected: $index==selectedIndex}"
Angular ahora admite expresiones que devuelven un objeto. Cada propiedad (nombre) de este objeto ahora se considera como un nombre de clase y se aplica según su valor.
Sin embargo, estas formas no son funcionalmente iguales. Aquí hay un ejemplo:
ng-class="{admin:'enabled', moderator:'disabled', '':'hidden'}[user.role]"
Por lo tanto, podríamos reutilizar las clases CSS existentes básicamente mapeando una propiedad de modelo a un nombre de clase y al mismo tiempo mantener las clases CSS fuera del código del controlador.