Библиотека Tom Select предоставляет гибкий набор методов для работы с
опциями, позволяя динамически изменять содержимое выпадающего списка,
управлять состоянием выбранных элементов и синхронизировать данные с
внешними источниками. Архитектура опций построена вокруг внутренней
коллекции объектов, где каждая опция представляет собой
структурированную запись с ключевыми полями: value,
text, disabled, а также пользовательскими
атрибутами.
Метод addOption() используется для добавления новой
опции в текущий экземпляр. Он принимает объект, содержащий данные опции,
и добавляет его во внутренний набор без автоматического выбора.
Сигнатура:
tomSelect.addOption(data)
Пример структуры опции:
{
value: "1",
text: "Первый элемент"
}
После вызова метод не изменяет DOM напрямую, а обновляет внутреннее состояние, после чего при необходимости пересоздаёт список отображаемых элементов.
Ключевое поведение:
value игнорируется;Метод addOptions() предназначен для пакетного добавления
нескольких опций. Это более эффективный способ по сравнению с
последовательным вызовом addOption().
Сигнатура:
tomSelect.addOptions(arrayOfOptions)
Каждый элемент массива проходит валидацию на наличие
value. При отсутствии обязательных полей опция
пропускается.
Особенности:
Метод updateOption() изменяет существующую опцию по её
значению. Используется для синхронизации данных, пришедших из внешнего
источника.
Сигнатура:
tomSelect.updateOption(value, data)
Если опция с указанным value отсутствует, обновление не
выполняется.
Пример:
tomSelect.updateOption("1", {
text: "Обновлённый текст"
})
Поведение метода:
Метод removeOption() удаляет опцию из внутреннего списка
и из DOM-структуры, если она отображена.
Сигнатура:
tomSelect.removeOption(value)
При удалении активной выбранной опции она также исключается из списка выбранных значений.
Особенности поведения:
Метод clearOptions() полностью очищает список доступных
опций, не затрагивая выбранные значения.
Сигнатура:
tomSelect.clearOptions()
Используется в сценариях полной перезагрузки данных, когда источник опций изменяется глобально.
Ключевые моменты:
addOptions() для
восстановления списка.Метод clearOption() удаляет опцию и одновременно снимает
её выбор, если она была активна.
Сигнатура:
tomSelect.clearOption(value)
В отличие от removeOption(), здесь дополнительно
учитывается состояние выбора, что делает метод более строгим.
Метод getOption() возвращает DOM-элемент, связанный с
указанной опцией.
Сигнатура:
tomSelect.getOption(value)
Возвращаемое значение — HTML-элемент списка, если опция существует,
иначе undefined.
Используется для:
Метод getOptions() возвращает полный набор доступных
опций в виде объекта.
Сигнатура:
tomSelect.getOptions()
Результат представляет собой словарь, где ключ — это
value, а значение — объект опции.
Пример структуры:
{
"1": { value: "1", text: "Первый" },
"2": { value: "2", text: "Второй" }
}
Метод refreshOptions() инициирует перерасчёт и
перерисовку списка опций без изменения данных.
Сигнатура:
tomSelect.refreshOptions()
Используется при изменении фильтров, поисковых запросов или внешних условий отображения.
Поведение:
Метод sync() синхронизирует внутреннее состояние Tom
Select с исходным <select> элементом.
Сигнатура:
tomSelect.sync()
Основное назначение — обеспечение согласованности между DOM и внутренней моделью данных.
Сценарии применения:
<option> в HTML;Метод setValue() изменяет выбранные значения,
автоматически вызывая события обновления.
tomSelect.setValue(value)
Поведение:
Альтернативный метод setValueSilently() выполняет ту же
операцию без генерации событий:
tomSelect.setValueSilently(value)
Используется при массовых обновлениях состояния, где лишние события могут привести к каскадным перерисовкам.
Метод clear() полностью очищает выбранные значения.
tomSelect.clear()
Особенности:
Хотя эти методы относятся к управлению выбранными значениями, они тесно связаны с опциями.
tomSelect.addItem(value)
tomSelect.removeItem(value)
addItem() выбирает опцию, если она существует, а
removeItem() снимает выбор.
Поведение:
addItem() игнорирует несуществующие значения;removeItem() безопасен при отсутствии элемента;Методы управления доступностью опций:
tomSelect.disableOption(value)
tomSelect.enableOption(value)
При отключении:
При включении восстанавливается стандартное поведение.
Метод toggleOption() переключает состояние опции между
активным и неактивным.
tomSelect.toggleOption(value)
Логика:
Используется в сценариях фильтрации или ограничения доступных значений.
Хотя метод относится к поисковому полю, он влияет на отображение опций через фильтрацию:
tomSelect.setTextboxValue(text)
После установки значения происходит:
При работе с тысячами опций критически важны пакетные методы:
addOptions() вместо множественных
addOption();setValueSilently() вместо setValue() при
массовых изменениях;refreshOptions() только после завершения всех
изменений.Внутренняя модель Tom Select оптимизирована под ленивую отрисовку, что снижает нагрузку на DOM и ускоряет обновление интерфейса при частых операциях с данными.