#jquery-select2 #custom-adapter
Вопрос:
У меня есть большой массив данных (около 7000 записей), которые необходимо загрузить при разбиении на страницы прокрутки. Я реализовал его с использованием пользовательского адаптера данных. Но выпадающий поиск по умолчанию select2 не работает. Пожалуйста, помогите это исправить. Заранее спасибо!
lt;!DOCTYPE htmlgt; lt;headgt; lt;titlegt;lt;/titlegt; lt;link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" /gt; lt;script type="text/javascript" src='//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js'gt;lt;/scriptgt; lt;script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"gt;lt;/scriptgt; lt;script type="text/javascript"gt; $(document).ready(function() { var dataArr = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "117", "118", "119", "120", "121"]; var items = []; for (var i = 0; i lt; dataArr.length; i ) { items.push({ id: dataArr[i], text: "data " dataArr[i] }) } console.log(items); var pageSize = 5; $.fn.select2.amd.require(["select2/data/array", "select2/utils"], function(ArrayData, Utils) { function CustomData($element, options) { CustomData.__super__.constructor.call(this, $element, options); } Utils.Extend(CustomData, ArrayData); CustomData.prototype.query = function(params, callback) { if (!("page" in params)) { params.page = 1; } var data = {}; data.results = items.slice((params.page - 1) * pageSize, params.page * pageSize); data.pagination = {}; data.pagination.more = params.page * pageSize lt; items.length; callback(data); }; $("#my").select2({ ajax: {}, dataAdapter: CustomData }); }) }); lt;/scriptgt; lt;/headgt; lt;bodygt; lt;select id="my" style="width: 300px"gt;lt;/selectgt; lt;/bodygt; lt;/htmlgt;