В библиотеке Slim Sel ect управление выбранными значениями строится
вокруг синхронизации состояния между скрытым <select>
и внутренней моделью компонента. Сброс выбора в этом контексте означает
приведение компонента к начальному состоянию: отсутствие выбранных
значений либо возврат к placeholder/первому значению в зависимости от
конфигурации.
Основной способ программного сброса реализуется через установку пустого значения.
Для одиночного выбора:
const select = new SlimSelect({
select: '#mySelect'
});
// сброс выбора
select.set('')
Для множественного выбора:
const select = new SlimSelect({
select: '#mySelect',
settings: {
isMultiple: true
}
});
// сброс выбора
select.set([])
Пустая строка и пустой массив интерпретируются как отсутствие
выбранных значений, при этом внутреннее состояние синхронизируется с
DOM-элементом <select>.
В некоторых сценариях используется null, однако
поведение зависит от версии Slim Select и конфигурации. В большинстве
реализаций null приводит к очистке, но не всегда
гарантированно обрабатывается одинаково.
select.set(null)
Практически более стабильным считается использование пустой строки или массива, поскольку они явно соответствуют типу выбора.
Slim Select автоматически реагирует на стандартный сброс HTML-формы,
если инициализация выполнена на <select> внутри
<form>.
<form id="form">
<select id="mySelect">
<option value="">Пусто</option>
<option value="1">Первый</option>
<option value="2">Второй</option>
</select>
<button type="reset">Сброс</button>
</form>
При использовании стандартного reset:
const select = new SlimSelect({
select: '#mySelect'
});
Событие reset формы приводит к восстановлению исходного
состояния <select>, а Slim Select синхронизирует своё
состояние через наблюдение изменений DOM.
Если используется placeholder, сброс может приводить к отображению текста-заглушки вместо значения.
const select = new SlimSelect({
select: '#mySelect',
placeholder: 'Выберите значение'
});
// сброс к placeholder
select.set('')
При отсутствии выбранного значения Slim Select возвращает отображение placeholder, если он задан в настройках.
В режиме isMultiple состояние хранит массив выбранных
значений. Очистка требует полного обнуления массива.
select.set([])
Дополнительно возможна очистка через обновление данных:
select.setData([])
Этот вариант не только снимает выбор, но и очищает список доступных опций, что используется при динамических сценариях.
Часто требуется очистить только выбор, не затрагивая набор опций.
select.setData([
{ text: 'Первый', value: '1' },
{ text: 'Второй', value: '2' }
]);
// очистка выбранного значения
select.set('')
В этом случае структура списка остаётся неизменной, меняется только состояние выбранных элементов.
<select>Slim Select синхронизируется с нативным элементом, поэтому изменение
value напрямую с последующим событием change
также приводит к очистке.
const el = document.querySelector('#mySelect');
el.value = '';
el.dispatchEvent(new Event('change'));
Для множественного выбора:
Array.fr om(el.options).forEach(o => o.selected = false);
el.dispatchEvent(new Event('change'));
Этот подход используется при интеграции с внешними формами и сторонними библиотеками управления состоянием.
При динамической загрузке данных сброс часто комбинируется с перезаполнением списка:
select.setData([
{ text: 'A', value: 'a' },
{ text: 'B', value: 'b' }
]);
select.set(''); // очистка после обновления данных
Если выполняется перезагрузка данных с сервера, порядок операций имеет значение: сначала обновляется список, затем сбрасывается выбор, иначе возможно восстановление старого состояния.
Если выбранное значение становится недоступным (например, опция удалена), Slim Select автоматически очищает выбор при следующей синхронизации.
select.setData([
{ text: 'A', value: 'a' }
]);
select.set('a');
// позже опция удаляется
select.setData([]); // выбор сбрасывается автоматически
Сброс выбора не всегда означает очистку поискового поля внутри выпадающего списка. В Slim Select поиск хранится отдельно и может сохранять введённое значение.
Для полного сброса UI используется закрытие и повторное открытие:
select.close();
select.set('');
В некоторых случаях требуется дополнительное открытие:
select.close();
select.open();
Жёсткий способ сброса заключается в уничтожении экземпляра и создании нового:
select.destroy();
const newSelect = new SlimSelect({
select: '#mySelect'
});
Такой подход применяется при полной перезагрузке состояния формы, когда требуется гарантированное обнуление всех внутренних структур.
Если компонент находится в состоянии disabled, сброс
значения может не привести к визуальному обновлению до момента повторной
активации.
select.set('');
select.disable();
// изменения могут не отображаться до enable
select.enable();
В архитектурах с внешним состоянием (Redux, Vuex, Zustand) сброс обычно выполняется через обновление состояния и последующую передачу значения в Slim Select.
state.selected = [];
select.set(state.selected);
Это предотвращает рассинхронизацию между UI и моделью данных.
Сброс выбора используется в следующих типах логики:
change обеспечивает синхронизацию