Choices.js реализует событийно-ориентированную архитектуру, в которой любые изменения состояния компонента (выбор элементов, ввод текста, открытие выпадающего списка, фильтрация) транслируются через набор стандартных событий экземпляра. Эти события позволяют синхронизировать интерфейс, интегрировать сторонние модули и строить реактивную логику поверх компонента.
Срабатывает при добавлении нового элемента в выбранное значение (selected items).
Передаваемые данные включают:
value — значение добавленного элементаitem — объект модели элементаid — внутренний идентификаторИспользуется при:
Поведение события фиксирует момент включения элемента в набор выбранных значений, независимо от источника добавления.
Срабатывает при удалении элемента из выбранных значений.
Передаваемые данные:
value — значение удалённого элементаitem — объект удалённой моделиid — идентификатор элементаСобытие отражает любые способы удаления:
Срабатывает в момент выбора элемента из выпадающего списка.
Передаваемые данные:
choice — объект выбранного элементаitem — нормализованная модельОтличие от addItem заключается в том, что
choice фиксирует именно пользовательское действие выбора из
dropdown, тогда как addItem фиксирует итоговое добавление в
состояние независимо от источника.
Срабатывает при любом изменении итогового значения компонента.
Передаваемое значение:
value — текущее состояние выбранных значений (строка
или массив, в зависимости от режима)Характеристика:
addItem и removeItemИспользуется для синхронизации формы, отправки данных, реактивного обновления состояния приложения.
Срабатывает при вводе текста в поле поиска внутри Choices.js.
Передаваемые данные:
value — строка поискаresult — массив отфильтрованных элементовОсобенности:
Срабатывает при открытии выпадающего списка.
Не содержит сложных payload-данных, фиксирует только факт изменения состояния интерфейса.
Типичные причины срабатывания:
Срабатывает при закрытии выпадающего списка.
Срабатывает при:
Срабатывает при изменении активного (подсвеченного) элемента в списке.
Передаваемые данные:
item — текущий выделенный элементИспользуется для:
Внутри Choices.js события образуют последовательные цепочки, отражающие пользовательские сценарии:
search (если ввод был активен)showDropdown (если список был закрыт)highlightItem (при навигации)choice (факт выбора)addItem (добавление в состояние)change (обновление итогового значения)removeItemchangeshowDropdownhighlightItem (если есть активный элемент)hideDropdownВсе события Choices.js исполняются синхронно в рамках текущего цикла JavaScript. Это означает, что порядок вызовов сохраняется и может использоваться для построения предсказуемой логики обработки.
События не блокируют друг друга и не влияют напрямую на внутреннее
состояние компонента. Например, обработка search не
прерывает highlightItem, а change вызывается
независимо от источника изменения данных.
Некоторые события могут вызываться многократно в рамках одного пользовательского действия:
search — на каждый ввод символаhighlightItem — при каждой навигации по спискуChoices.js строго разделяет:
showDropdown, hideDropdown,
highlightItem)addItem, removeItem,
change)search, choice)Это разделение позволяет строить поверх библиотеки как простые формы, так и сложные интерфейсы с серверной логикой.
Каждое событие отражает конкретную фазу изменения внутреннего состояния:
addItem и
removeItemchangeshowDropdown и hideDropdownhighlightItemsearchЭта модель позволяет рассматривать Choices.js как реактивный слой поверх DOM, где события являются основным каналом взаимодействия между логикой и представлением.