我正在使用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)
)
Run Code Online (Sandbox Code Playgroud)
这是咖啡脚本,但我希望它对每个人都是可读的.input是DOM包含选择框的元素 - 我之前做过input.select2( //options )
我的问题基本上是,如何启用无限滚动ajax?