Как использовать ng-class в select с ng-options в Angular 1.4 и выше

Моя проблема похожа на одну из следующих сообщений: Как использовать ng-class в select с ng-options

Я хочу иметь возможность настраивать определенные параметры в моем select с помощью CSS. Если я вернусь к используемому примеру, у меня будет такой массив людей:

var persons = [
{Name:'John',Eligible:true},
{Name:'Mark',Eligible:true},
{Name:'Sam',Eligible:false},
{Name:'Edward',Eligible:false},
{Name:'Michael',Eligible:true}
];

Теперь я хочу иметь возможность написать некоторый код, подобный следующему, чтобы по-разному отображать одного приемлемого человека другому, не имеющему права:

<select ng-model="Blah" ng-options="person.Name for person in persons" ng-class="{'is-elligible': person.Elligible}"></select>

Но в этом коде у меня нет доступа к переменной person в теге ng-class.

Дело в другом посте, решение было основано на директиве cutom, которая хорошо работала в angular до версии 1.4. Теперь это решение больше не работает.

Возможное решение — не использовать ng-options, а использовать ng-repeat в теге option. Но я хотел бы по-прежнему работать с ng-options, потому что он кажется быстрее и проще в использовании.

Так что, если у кого-нибудь есть решение сделать это с angular 1.4 и выше, было бы здорово поделиться им! :)

заранее спасибо


person Alexandre D.    schedule 18.01.2016    source источник
comment
См. рабочий пример из jsfiddle.net/ExpertSystem/2T757 . Я получил это из ответа stackoverflow.com/questions/ 24631325/ . Это решение для Angular › 1.4   -  person Andriy Ivaneyko    schedule 18.01.2016
comment
мой ответ использует полный для вас?   -  person Andriy Ivaneyko    schedule 27.01.2016


Ответы (1)


Вы не можете сделать это с помощью простого ng-options.

Вы должны использовать директиву ng-repeat или custom для достижения желаемого поведения. В случае, если случай такой простой, как вы описали, я рекомендую вам использовать ng-repeat, поскольку это общий подход для достижения такого поведения.

Попробуйте углубиться в детали уже существующего ответа: Настроить выбор ng-options посмотрите и это ответит на ваш вопрос.

p.s. Не понял вашего смысла использовать ng-repeat, потому что в конкретном случае проще использовать уже существующую директиву, чем создавать новую и добавлять к ней модульные тесты, где вы поняли, что ng-repeat медленнее ...

person Andriy Ivaneyko    schedule 18.01.2016
comment
Прежде всего, спасибо за ваш ответ. Что касается ng-repeat, дело в моих ng-options, я использую несколько фильтров, и обновление моих фильтров происходит очень медленно с ng-repeat, тогда как с ng-options обновление происходит почти мгновенно. - person Alexandre D.; 18.01.2016