Методы очистки и сброса

Choices.js предоставляет набор методов для управления внутренним состоянием инстанса: выбранными значениями, списком опций, строкой поиска и кэшированными данными. Логика очистки разделена на несколько уровней, что позволяет точечно сбрасывать отдельные части состояния без полного пересоздания компонента.

Очистка выбранных значений

Одной из ключевых задач является удаление уже выбранных элементов. В Choices.js за это отвечает несколько методов, каждый из которых работает на своём уровне абстракции.

removeActiveItems()

Метод удаляет все активные (выбранные) элементы из текущего состояния инстанса.

  • Очищает визуальные теги выбранных значений
  • Сбрасывает внутренний список выбранных элементов
  • Не затрагивает список доступных опций

Используется в сценариях, когда требуется оставить список вариантов, но полностью сбросить выбор пользователя.

removeItem(item)

Удаляет конкретный выбранный элемент.

  • Принимает объект выбора или значение
  • Обновляет DOM и внутренние структуры
  • Триггерит события изменения состояния

Подходит для точечного управления выбранными значениями, например при динамических ограничениях или валидации.

setChoiceByValue(value)

Хотя метод не является очисткой напрямую, он часто используется в паре со сбросом состояния.

  • Перезаписывает текущее значение
  • Может использоваться для установки пустого состояния при отсутствии значения

Очистка списка выбранных значений через полную перезапись

В некоторых случаях удобнее не удалять элементы по одному, а полностью перезаписать состояние:

  • Передача пустого массива значений при инициализации или обновлении
  • Использование программной переинициализации инстанса

Такой подход применяется при смене контекста данных, например при переключении зависимых селектов.


Очистка списка опций

Choices.js позволяет управлять не только выбранными значениями, но и доступными вариантами.

clearChoices()

Метод полностью очищает список доступных опций.

  • Удаляет все элементы выбора
  • Очищает внутренние структуры данных
  • Оставляет инстанс активным

Часто используется перед загрузкой нового набора данных, особенно при работе с API.


Сброс внутреннего хранилища

clearStore()

Один из наиболее «глубоких» методов очистки.

  • Очищает все внутренние данные инстанса
  • Сбрасывает опции, выбранные значения и метаданные
  • Возвращает компонент в состояние, близкое к пустой инициализации

Используется при полной смене контекста работы компонента или перед уничтожением логики без полного destroy().


Очистка строки поиска

Choices.js включает встроенный поиск по опциям, и его состояние также может быть сброшено.

clearInput()

  • Очищает текстовое поле ввода
  • Сбрасывает введённый пользователем текст
  • Не влияет на выбранные значения или список опций

Используется при программной очистке формы или после выбора элемента.

clearSearch()

Метод сбрасывает состояние фильтрации:

  • Убирает активный поисковый запрос
  • Возвращает отображение списка к исходному состоянию
  • Может сопровождаться перерисовкой списка опций

Полный программный сброс состояния

Комбинирование методов позволяет получить полный контроль над состоянием компонента без его пересоздания.

Типичный сценарий полного сброса включает:

  • очистку выбранных значений через removeActiveItems()
  • очистку поиска через clearInput() и/или clearSearch()
  • восстановление списка опций через clearChoices() и последующую загрузку новых данных

Такой подход используется при динамической смене источника данных, когда компонент остаётся на странице, но его содержимое полностью заменяется.


Различия уровней очистки

Логика очистки в Choices.js построена иерархически:

  • Уровень выбранных значений — управление текущим выбором пользователя
  • Уровень опций — управление доступными вариантами
  • Уровень UI-состояния — управление поиском и вводом
  • Уровень хранилища — полный сброс внутренней модели данных

Разделение позволяет минимизировать лишние перерисовки и сохранять стабильность состояния при частичных обновлениях.


Поведение событий при очистке

При вызове методов очистки Choices.js генерирует набор событий, отражающих изменения состояния:

  • изменение выбранных элементов
  • обновление списка опций
  • сброс поиска

Это позволяет интегрировать компонент в реактивные системы и синхронизировать его состояние с внешним приложением.


Сценарии применения

Очистка и сброс используются в типовых архитектурных задачах:

  • динамическая подгрузка зависимых списков
  • фильтрация данных с пересборкой опций
  • форма с повторным использованием одного компонента
  • синхронизация с серверным состоянием после сохранения данных
  • переключение контекстов без перерисовки всей формы

Каждый метод применяется в зависимости от требуемой глубины сброса и необходимости сохранения части состояния компонента.