So aktivieren Sie endloses Scrollen in select2 4.0 ohne Ajax

7

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:

%Vor%

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?

    
Paperback Writer 24.09.2015, 08:24
quelle

4 Antworten

9

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.

%Vor%

Definieren Sie als Nächstes Ihren eigenen Datenadapter. Im Inneren, Inn query drücken pagination info in Rückruf.

%Vor%

Hier ist eine volle Geige

    
Paperback Writer 15.10.2015, 09:54
quelle
8

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%     
prograhammer 05.11.2015 03:24
quelle
7

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

    
happytime harry 16.10.2015 16:07
quelle
0

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.

    
Max 03.11.2017 22:26
quelle