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