Choices.js предоставляет набор методов для управления внутренним состоянием инстанса: выбранными значениями, списком опций, строкой поиска и кэшированными данными. Логика очистки разделена на несколько уровней, что позволяет точечно сбрасывать отдельные части состояния без полного пересоздания компонента.
Одной из ключевых задач является удаление уже выбранных элементов. В Choices.js за это отвечает несколько методов, каждый из которых работает на своём уровне абстракции.
removeActiveItems()Метод удаляет все активные (выбранные) элементы из текущего состояния инстанса.
Используется в сценариях, когда требуется оставить список вариантов, но полностью сбросить выбор пользователя.
removeItem(item)Удаляет конкретный выбранный элемент.
Подходит для точечного управления выбранными значениями, например при динамических ограничениях или валидации.
setChoiceByValue(value)Хотя метод не является очисткой напрямую, он часто используется в паре со сбросом состояния.
В некоторых случаях удобнее не удалять элементы по одному, а полностью перезаписать состояние:
Такой подход применяется при смене контекста данных, например при переключении зависимых селектов.
Choices.js позволяет управлять не только выбранными значениями, но и доступными вариантами.
clearChoices()Метод полностью очищает список доступных опций.
Часто используется перед загрузкой нового набора данных, особенно при работе с API.
clearStore()Один из наиболее «глубоких» методов очистки.
Используется при полной смене контекста работы компонента или перед
уничтожением логики без полного destroy().
Choices.js включает встроенный поиск по опциям, и его состояние также может быть сброшено.
clearInput()Используется при программной очистке формы или после выбора элемента.
clearSearch()Метод сбрасывает состояние фильтрации:
Комбинирование методов позволяет получить полный контроль над состоянием компонента без его пересоздания.
Типичный сценарий полного сброса включает:
removeActiveItems()clearInput() и/или
clearSearch()clearChoices() и
последующую загрузку новых данныхТакой подход используется при динамической смене источника данных, когда компонент остаётся на странице, но его содержимое полностью заменяется.
Логика очистки в Choices.js построена иерархически:
Разделение позволяет минимизировать лишние перерисовки и сохранять стабильность состояния при частичных обновлениях.
При вызове методов очистки Choices.js генерирует набор событий, отражающих изменения состояния:
Это позволяет интегрировать компонент в реактивные системы и синхронизировать его состояние с внешним приложением.
Очистка и сброс используются в типовых архитектурных задачах:
Каждый метод применяется в зависимости от требуемой глубины сброса и необходимости сохранения части состояния компонента.