Я использую select2
с пользовательским адаптером данных. Все данные, предоставляемые select2
, генерируются локально на веб-странице (поэтому нет необходимости использовать ajax). Поскольку метод query
может генерировать много результатов (около 5k), открытие окна выбора происходит довольно медленно.
В качестве лекарства я хотел использовать бесконечную прокрутку. В Документация для пользовательского адаптера данных говорится, что метод query
должен получать параметр page
вместе с параметром term
:
@param params.page Конкретная страница, которую следует загрузить. Обычно это предоставляется при работе с удаленными наборами данных, которые полагаются на разбиение на страницы, чтобы определить, какие объекты следует отображать.
Но это не так: присутствует только term
. Я пытался вернуть more: true
или more: 1000
, но это не помогло. Я предполагаю, что это потому, что по умолчанию бесконечная прокрутка включен, если включен ajax.
Я предполагаю, что включение бесконечной прокрутки потребует использования amd.require
, но я не уверен, что именно делать. Я пробовал этот код:
$.fn.select2.amd.require(
["select2/utils", "select2/dropdown/infiniteScroll"],
(Utils, InfiniteScroll) =>
input.data("select2").options.options.resultsAdapter =
Utils.Decorate(input.data("select2").options.options.resultsAdapter, InfiniteScroll)
)
Это кофейный скрипт, но я надеюсь, что он понятен всем. input
— это элемент DOM
, содержащий поле выбора — раньше я делал input.select2( //options )
Мой вопрос в основном, как мне включить бесконечную прокрутку без ajax
?