Ich verwende select2
mit benutzerdefiniertem Datenadapter. Alle Daten, die für select2
bereitgestellt werden, werden lokal in der Webseite generiert (es ist also nicht nötig, ajax zu verwenden). Als query
-Methode kann eine Menge Ergebnisse (ca. 5k) erzeugen, die Auswahlbox ist ziemlich langsam.
Als Abhilfe wollte ich unendlich scroll verwenden. Dokumentation für Adapter benutzerdefinierte Daten besagt, dass query
Methode sollte page
Parameter zusammen mit% erhalten co_de%:
@param params.page Die spezifische Seite, die geladen werden soll. Das ist wird typischerweise bei der Arbeit mit entfernten Datensätzen bereitgestellt, die sich darauf verlassen bei Seitenumbruch, um festzustellen, welche Objekte angezeigt werden sollen.
Aber es ist nicht: nur term
ist vorhanden. Ich habe versucht, term
oder more: true
zurückzugeben, aber das hat nicht geholfen. Ich denke, das liegt daran, dass standardmäßig unendliche Scroll aktiviert ist iff Ajax aktiviert .
Ich vermute, dass die Aktivierung von unendlichem Scroll more: 1000
beinhaltet, aber ich bin mir nicht sicher, was genau zu tun ist. Ich habe diesen Code ausprobiert:
Das ist ein Kaffee-Skript, aber ich hoffe, dass es für jeden lesbar ist. amd.require
ist input
Element enthält Auswahlfeld - früher habe ich DOM
Meine Frage ist im Grunde, wie kann ich unendlich scroll ohne input.select2( //options )
aktivieren?
Select2
aktiviert nur infinite scroll, wenn ajax
aktiviert ist. Glücklicherweise können wir es aktivieren und weiterhin unseren eigenen Adapter verwenden. Wenn Sie also ein leeres Objekt in die Option ajax
setzen, ist das der Fall.
Definieren Sie als Nächstes Ihren eigenen Datenadapter. Im Inneren, Inn query
drücken pagination
info in Rückruf.
Hier ist eine volle Geige
Ich fand, dass die obigen Antworten eine bessere Demonstration brauchten. Select2 4.0.0 führt die Möglichkeit ein, benutzerdefinierte Adapter . Mit dem ajax: {}
-Tick habe ich einen benutzerdefinierten dataAdapter jsonAdapter
erstellt, der direkt mit lokalem JSON arbeitet. Beachten Sie auch, dass die Version 4.0.0 von Select2 eine beeindruckende Leistung mit einer großen JSON-Zeichenfolge bietet. Ich verwendete einen Online-JSON-Generator und erstellte 10.000 Namen als Testdaten. Dieses Beispiel ist jedoch sehr matschig . Während das funktioniert, würde ich hoffen, dass es einen besseren Weg gibt.
Siehe die vollständige Geige hier: Ссылка
%Vor%Erweitern Sie auf diese Antwort , um zu zeigen, wie die Suchfunktion von select2 beibehalten wird. Danke Paperback Writer !
In diesem Beispiel finden Sie außerdem , wie Sie mithilfe einer clientseitigen Datenquelle mit select2 Version 3.4.5 unbegrenztes Scrollen erreichen können .
In diesem Beispiel werden die oringal-Optionen in einem select-Tag verwendet, um die Liste anstelle des Elementarrays zu erstellen, was in meiner Situation erforderlich war.
%Vor%Hier ist ein jsfiddle
Das ist keine direkte Antwort: Nachdem ich eine Weile damit zu kämpfen hatte, wechselte ich zu selectie. Die Unterstützung von Select2 für Nicht-Ajax-Suche ist seit Version 4 furchtbar kompliziert, grenzt an das Lächerliche und ist nicht gut dokumentiert. Selectize bietet explizite Unterstützung für Nicht-Ajax-Suche: Sie implementieren einfach eine Funktion, die eine Liste zurückgibt.
Tags und Links javascript jquery jquery-select2 jquery-select2-4