¿cómo estás?
Estoy desarrollando un formulario en mi instalación de Wordpress para extraer una gran cantidad de términos/taxonomías, y para eso estoy usando Select2 en estos campos. El problema es que tenemos más de 20.000 taxonomías y, aun limitando la cantidad de letras a buscar, estamos teniendo un gran retraso en la selección de las mismas.
Al leer la documentación de Select2, noté que existe la posibilidad de cargar los resultados parcialmente, como si trabajara con un desplazamiento infinito. Creo que esto ayudará mucho en el rendimiento. Intenté algunas cosas, pero todo fue en vano. No tengo mucha experiencia con JavaScript, y realmente estoy luchando para que funcione.
La parte del código responsable de mostrar los resultados es la siguiente:
return { ajax: applyFilters( 'jet.fb.select_autocomplete.ajax', { delay: 250, type: 'POST', dataType: 'json', data: function( { term } ) { return { action, term, fieldName: scope.attr( 'data-field-name' ), formId: scope.closest( 'form' ).data( 'form-id' ), }; }, processResults: function( response ) { if ( response.success ) { return { results: response.data } } return { results: [] }; }, } ), }¿Podría alguien más experimentado guiarme para implementar esta característica?
Muchísimas gracias :)
Luiz, ¿ha intentado usar llamadas del lado del servidor para filtrar su lista? En mi experiencia, hacer eso y requerir 2 o más letras para comenzar a filtrar ayuda enormemente. A continuación se muestra un ejemplo de lo que he hecho antes (se reconstruye a partir de los documentos aquí ):
$('.js-data-example-ajax').select2({ ajax: { url: 'https://api.github.com/search/repositories', data:function(params){ term:params.term, //this is the search term to hit the server with }, delay: 400, dataType: 'json', minimumInputLength: 2, } });Si esto aún no funciona para usted, le recomiendo buscar en la paginación aquí u optimizar su consulta de búsqueda.