setSelected — метод экземпляра Slim Select, предназначенный для
программного управления выбранными значениями в выпадающих списках.
Используется для установки одного или нескольких активных значений без
взаимодействия пользователя с интерфейсом. Является частью API
управления состоянием компонента и напрямую влияет на внутреннюю модель
выбора и синхронизацию с оригинальным <select>.
Метод вызывается на экземпляре Slim Select:
instance.setSelected(value);
value — строка, массив строк или значение,
соответствующее value у <option>:
null или пустой массив — для очистки выбора (в
зависимости от конфигурации)Возвращаемое значение отсутствует.
Основная функция setSelected заключается в изменении
текущего состояния выбранных элементов без необходимости триггера
пользовательских событий интерфейса. Метод работает с внутренним
состоянием Slim Select и приводит к обновлению:
<select>change, select,
deselect в зависимости от конфигурации)При работе с одиночным <select> метод принимает
строковое значение, соответствующее value одной из
<option>.
const select = new SlimSelect({
select: '#single'
});
select.setSelected('2');
В результате:
"2" становится
активнойЕсли передано значение, отсутствующее в списке, поведение зависит от версии Slim Select: обычно игнорируется или приводит к очистке выбора при строгой конфигурации.
При включённой опции multiple: true метод принимает
массив значений:
const select = new SlimSelect({
select: '#multi'
});
select.setSelected(['1', '3', '5']);
Результат:
Важно, что метод не добавляет значения к существующим, а перезаписывает текущее состояние.
Метод работает исключительно с value атрибутами
<option>:
<select id="example">
<option value="a">Alpha</option>
<option value="b">Beta</option>
<option value="c">Gamma</option>
</select>
Использование:
select.setSelected('b');
или
select.setSelected(['a', 'c']);
Текстовое содержимое option не используется как идентификатор.
При вызове setSelected происходит несколько внутренних
этапов:
<select>Эти операции выполняются атомарно, что исключает промежуточные неконсистентные состояния интерфейса.
Slim Select поддерживает двустороннюю синхронизацию. После вызова метода:
<option> устанавливается
selected = true/false<select> обновляется состояние
value или набор selectedOptionschangeПример наблюдаемого поведения:
document.querySelector('#multi').addEventListener('change', (e) => {
console.log(e.target.selectedOptions);
});
select.setSelected(['2', '4']);
Событие change может быть вызвано автоматически, если
это предусмотрено конфигурацией экземпляра.
В зависимости от версии и настроек Slim Select, вызов
setSelected может инициировать:
change — стандартное DOM-событиеselect — событие выбора элементаdeselect — событие снятия выбораПоследовательность событий зависит от того, изменяется ли состояние частично или полностью.
При полном перезаписывании списка выбранных значений обычно происходит комбинация снятия старых значений и установки новых.
Метод всегда заменяет текущее состояние, а не модифицирует его:
select.setSelected(['1']);
select.setSelected(['2']);
// итоговое состояние: только '2'
Если значение отсутствует в списке <option>:
select.setSelected([]);
Результат:
Для одиночного селекта аналогично может использоваться
null.
Если опция имеет атрибут disabled, поведение зависит от
версии:
selected=true, но UI не отразит это
состояниеsetSelected изменяет только выбранные значенияsetData изменяет набор доступных опцийsetSelected выполняет массовую замену состоянияaddItem добавляет одно значение к текущему наборуremoveItem удаляет конкретное значениеВ некоторых реализациях set может быть алиасом или
низкоуровневым методом обновления состояния, тогда как
setSelected — более специализированный интерфейс для
выбора.
При динамической загрузке данных использование
setSelected требует наличия опций в момент вызова:
select.setData([
{ text: 'One', value: '1' },
{ text: 'Two', value: '2' }
]);
select.setSelected(['2']);
Если вызвать метод до загрузки данных, значение может быть проигнорировано.
Используется для установки значения после загрузки формы:
select.setSelected('3');
При повторном открытии формы или восстановлении из localStorage:
const saved = JSON.parse(localStorage.getItem('state'));
select.setSelected(saved.selected);
После получения данных API:
fetch('/api/user')
.then(res => res.json())
.then(data => {
select.setSelected(data.roles);
});
Используется для автоматического изменения выбора при логике приложения:
if (mode === 'admin') {
select.setSelected(['1', '2', '3']);
}
Многократный вызов setSelected приводит к полной
перерасчётной перерисовке состояния:
select.setSelected(['1']);
select.setSelected(['1', '2']);
select.setSelected(['1', '2', '3']);
Каждый вызов заменяет предыдущее состояние целиком, без накопления изменений.
При больших списках (сотни и тысячи опций):
select.setSelected(largeArray); // предпочтительно