Если вы не хотите помещать имена классов CSS в Controller, как я, вот старый прием, который я использую с дней до v1. Мы можем написать выражение, которое оценивает непосредственно имя класса selected , никаких пользовательских директив не требуется:
ng:class="{true:'selected', false:''}[$index==selectedIndex]"
Обратите внимание на старый синтаксис с двоеточием.
Существует также новый лучший способ условного применения классов, например:
ng-class="{selected: $index==selectedIndex}"
Angular теперь поддерживает выражения, которые возвращают объект. Каждое свойство (имя) этого объекта теперь рассматривается как имя класса и применяется в зависимости от его значения.
Однако эти пути функционально не равны. Вот пример:
ng-class="{admin:'enabled', moderator:'disabled', '':'hidden'}[user.role]"
Таким образом, мы могли бы повторно использовать существующие классы CSS, в основном сопоставляя свойство модели с именем класса и в то же время исключая классы CSS из кода контроллера.