Управление выбранными элементами в Choices.js строится вокруг набора методов, позволяющих программно синхронизировать состояние компонента с внешними данными. Основной механизм изменения выбора реализуется через методы установки значений.
Метод setValue применяется для задания текущего
состояния выбора целиком. Он принимает массив объектов или значений,
соответствующих структуре данных компонента.
Особенности поведения:
При использовании в режиме множественного выбора массив заменяет весь список выбранных элементов, а не дополняет его.
Метод setChoiceByValue используется для выбора элементов
на основе их значения. В отличие от setValue, он
ориентирован на сопоставление с уже существующими опциями.
Основные свойства:
valueПрименяется в случаях, когда выбор формируется на основе внешнего идентификатора, например ID из API.
В некоторых версиях встречается метод setValueByChoice,
выполняющий схожую функцию сопоставления значений с уже существующими
вариантами. В современных реализациях его использование считается
второстепенным по сравнению с setChoiceByValue.
Метод addItem добавляет новый элемент в список выбранных
значений. В зависимости от конфигурации экземпляра компонент может:
addItems: true)Поведение определяется параметрами и текущим состоянием данных.
Ключевые особенности:
Метод removeItem удаляет конкретный выбранный элемент.
Он работает на основе переданного значения или объекта.
Логика работы:
Используется при необходимости точечного контроля над выбранными значениями.
Метод removeItemByValue позволяет удалить выбранный
элемент по его значению value, без необходимости передачи
полного объекта.
Особенности:
Метод removeActiveItems очищает активный выбор. Может
работать как:
В зависимости от конфигурации используется для сброса состояния без уничтожения списка доступных опций.
Метод clearStore выполняет более радикальную очистку
внутреннего состояния компонента:
Используется в сценариях полной перезагрузки данных, например при смене источника данных или пользователя.
Метод clearChoices очищает список доступных вариантов,
не обязательно затрагивая текущий выбор.
Поведение:
Метод getValue возвращает текущее состояние выбранных
элементов. Может работать в двух режимах:
Управляется булевым параметром:
true — возвращаются только значенияfalse или отсутствие параметра — возвращаются
объектыПрименяется для синхронизации состояния компонента с внешними системами.
Метод setChoices позволяет полностью заменить набор
доступных опций. Хотя он не относится напрямую к выбранным элементам, он
влияет на состояние выбора при обновлении данных.
При использовании:
replaceChoicesТипичный сценарий — динамическая загрузка списка из API с последующей синхронизацией выбранных значений.
Метод reset возвращает компонент к начальному
состоянию:
Используется для повторного использования экземпляра без пересоздания.
Метод destroy полностью удаляет экземпляр
Choices.js:
После вызова восстановление возможно только через повторную инициализацию.
Каждый метод управления выбором влияет не только на визуальное состояние, но и на внутреннюю модель данных:
change,
addItem, removeItem)<select> элементОсобое значение имеет последовательность вызовов: при массовых
изменениях предпочтительно использовать методы, заменяющие состояние
целиком (setValue, setChoices), чтобы избежать
множественных перерисовок.
При включённой опции множественного выбора (removeItem,
addItem, setValue) методы управления работают
с массивами значений. Важные особенности:
Такой режим требует аккуратного управления состоянием при интеграции с внешними источниками данных, чтобы избежать рассинхронизации между сервером и UI.