Метод getSelected в библиотеке Slim Select предназначен
для получения текущего набора выбранных значений из экземпляра
компонента. Он используется для синхронизации состояния UI с логикой
приложения и извлечения данных без обращения к DOM напрямую.
Метод ориентирован на работу с уже инициализированным экземпляром Slim Select и выполняет чтение внутреннего состояния выбора.
Ключевые характеристики:
<select>.instance.getSelected();
Метод вызывается на экземпляре Slim Select, созданном через
new SlimSelect({...}).
При multiple: true возвращается массив строковых
значений:
["value1", "value2", "value3"]
Каждый элемент массива соответствует value выбранного
<option>.
При multiple: false возвращается строка:
"value1"
Если выбор отсутствует, результатом становится пустая строка:
""
Метод обращается к внутреннему состоянию Slim Select, которое обновляется при:
setSelected,
setData);Состояние всегда синхронизировано с визуальным интерфейсом.
const select = new SlimSelect({
select: '#mySelect'
});
const selected = select.getSelected();
console.log(selected);
const select = new SlimSelect({
select: '#myMultiSelect',
settings: {
multiple: true
}
});
const values = select.getSelected();
values.forEach(value => {
console.log(value);
});
Метод используется для извлечения значений без обращения к DOM:
const formData = {
tags: tagSelect.getSelected(),
categories: categorySelect.getSelected()
};
function syncState() {
state.selectedItems = select.getSelected();
}
const payload = {
items: select.getSelected()
};
fetch('/api/save', {
method: 'POST',
body: JSON.stringify(payload)
});
""
[]
Пустое состояние всегда приводит к предсказуемому результату, что упрощает проверку:
const selected = select.getSelected();
if (selected.length === 0) {
// отсутствие выбора
}
Обычный подход через <select>:
document.querySelector('#mySelect').value;
Ограничения такого подхода:
getSelected решает эти ограничения, работая с актуальной
моделью данных компонента.
После вызова setSelected метод getSelected
сразу возвращает обновлённое значение:
select.setSelected(['a', 'b']);
const values = select.getSelected();
// ['a', 'b']
При обновлении данных выбор может сбрасываться, что отражается в результате:
select.setData([{ text: 'A', value: 'a' }]);
select.getSelected(); // []
В режиме одиночного выбора часто ожидается массив, хотя возвращается строка:
const value = select.getSelected();
// некорректно для single mode:
value.forEach(...)
const selected = select.getSelected();
selected.includes('value'); // ошибка, если selected === ""
Корректный подход требует нормализации:
const selected = select.getSelected();
const normalized = Array.isArray(selected) ? selected : [selected].filter(Boolean);
Метод работает за константное время, так как обращается к внутреннему состоянию без обхода DOM. Это делает его предпочтительным для частых вызовов, например:
При изменении данных через API или события Slim Select состояние обновляется синхронно, поэтому:
select.setSelected(['x']);
console.log(select.getSelected());
всегда возвращает актуальное значение без задержек.
Метод часто используется как точка чтения состояния компонента в архитектурах: