Свойство index в Awesomplete является ключевым элементом
внутреннего состояния, отвечающим за позицию текущего выделенного
элемента в списке подсказок. Оно используется для управления навигацией
по результатам автодополнения, синхронизации визуального выделения и
логики выбора элемента через клавиатуру или программные вызовы.
index представляет собой числовое значение, указывающее
на текущий активный элемент списка подсказок:
0 — первый элемент списка1 — второй элементn — соответствующий элемент в пределах массива
результатов-1 — ни один элемент не выбранКлючевая особенность: значение index не
является индексом исходного массива данных напрямую, а отражает позицию
в текущем отфильтрованном и отрендеренном списке подсказок.
index с массивом
listВнутренняя логика Awesomplete строится вокруг массива
list, который содержит элементы после фильтрации
пользовательского ввода. index всегда синхронизирован с
этим массивом:
list[0] соответствует index = 0list[1] соответствует index = 1При изменении набора подсказок (например, при вводе нового символа)
происходит сброс или пересчёт index.
Важный момент: если список обновляется,
index автоматически сбрасывается в -1, чтобы
избежать некорректного выделения несуществующего элемента.
indexПри создании экземпляра Awesomplete:
index устанавливается в -1Такое состояние считается базовым и означает отсутствие текущего выбора.
const awesomplete = new Awesomplete(inputElement);
// awesomplete.index === -1
index при
навигацииОсновное изменение index происходит при взаимодействии
пользователя с клавиатурой.
При нажатии стрелки вниз:
index увеличивается на 1Если достигнут конец списка, поведение зависит от конфигурации, но обычно происходит циклический переход или остановка на последнем элементе.
При нажатии стрелки вверх:
index уменьшается на 1-1-1Состояние index = -1 означает:
index и метода
goto()Метод goto(i) напрямую изменяет значение
index:
goto(0) — переход к первому элементуgoto(n) — переход к элементу с индексом ngoto(-1) — снятие выделенияПри вызове goto() выполняется:
indexТаким образом, index является центральной переменной,
через которую проходит логика навигации.
index с DOM-структуройКаждое значение index соответствует конкретному элементу
<li> внутри контейнера списка (ul):
ul.children[index] — текущий активный элементactive или
аналогичныйaria-selected="true")При изменении index происходит:
index при
изменении вводаПри каждом изменении текста в поле ввода выполняется проверка соответствия текущего списка:
index = -1Причина сброса: предотвращение рассинхронизации между выбранным элементом и актуальными данными.
index и метод
select()Метод select() использует текущее значение
index как источник выбора:
index >= 0 → выбирается элемент
list[index]index = -1 → выбор не выполняется или используется
fallback логикаПосле вызова select():
index может быть сброшенПри использовании динамической подгрузки данных index
требует постоянной синхронизации:
index сбрасываетсяЕсли этого не учитывать, возможны состояния:
index указывает на несуществующий элементindexgoto()indexAwesomplete гарантирует, что index всегда находится в
допустимом диапазоне:
-1list.length - 1При выходе за пределы:
index на
UX-поведениеХотя index является внутренним свойством, он напрямую
определяет пользовательский опыт:
Любые изменения в его логике немедленно отражаются на поведении автодополнения, особенно при интенсивном вводе и быстром переключении между элементами списка.