Szenario Ich habe vor kurzem mit der Entwicklung eines Hintergrundverwaltungssystems auf Basis von ElementUI begonnen und dabei versehentlich ein Problem mit der Dropdown-Auswahl „el-select“ entdeckt. Wenn die Datenmenge in den „Optionen“, die die Dropdown-Optionen rendern, zu groß ist (die Anzahl der Dateneinträge in diesem Projekt hat 10.000 überschritten), bleibt der Dropdown-Selektor hängen, insbesondere bei der Fuzzy-Matching-Filterung. Beim Initialisieren des Selektors erfolgt beim Klicken keine Reaktion, und manchmal müssen Sie mehrere Male klicken, bevor das Popup-Fenster „Dialog“ angezeigt wird (dieser Dropdown-Filter ist im Popup-Fenster implementiert). Nachdem ich viele Blog-Notizen gelesen hatte, fand ich endlich eine Lösung für das Problem. Ich werde diesen Optimierungsplan jetzt als Notiz aufzeichnen, damit ich leicht darauf zurückgreifen kann, wenn ich in Zukunft auf ähnliche Probleme stoße. Hinweis: Basierend auf dem ausgewählten Dropdown-Filter wird durch benutzerdefinierte Ereignisse eine unscharfe Suchübereinstimmung erreicht. Es gibt zwei Möglichkeiten:
Code-ImplementierungBeispiel einer Vue-Komponente <Vorlage> <div Klasse="App"> <el-dialog title="Titel" :visible.sync="relatedOpen" :append-to-body="true" width="500px"> <el-row :gutter="16"> <el-col :span="20"> <el-Auswahl v-Modell="Wert" filterbar löschbar Stil="Breite:100%" Platzhalter="Bitte auswählen" :loading="SucheLaden" :filter-method="Filtermethode" v-el-select-loadmore="Weitere laden(Bereichsnummer)" @visible-change="sichtbareÄnderung" > <el-option v-for="Element in Optionen.slice(0, Bereichsnummer)" :Schlüssel="Element.Schlüssel" :label="Element.Wert" :Wert="Element.Schlüssel"></el-option> </el-Auswahl> </el-col> <el-col :span="4"> <el-button type="primary" @click="submit">OK</el-button> </el-col> </el-row> </el-dialog> </div> </Vorlage>
// Benutzerdefinierte Anweisungen: { "el-select-loadmore": (el, Bindung) => { // Holen Sie sich das durch das Element UI definierte Scroll-Element const SELECTWRAP_ROM = el.querySelector(".el-select-dropdown .el-select-dropdown__wrap"); wenn (SELECTWRAP_ROM) { // Scroll-Ereignis hinzufügen SELECTWRAP_ROM.addEventListener("scroll", function() { // Scrollen bestimmen const condition = this.scrollHeight - this.scrollTop <= this.clientHeight; Bedingung und Bindungswert(); }); } } } Die entsprechende Datenfunktion Standard exportieren { Daten() { zurückkehren { verbundenOpen: false, options: [] /* Wähle den Wert des Dropdown-Feldes */, Kursliste: [], Bereichsnummer: 10, searchLoad: false /* Ladezustand der Dropdown-Box*/, Wert: "", Timer: null }; }, erstellt() { dies.getOptions(); }, Methoden: { // Bei Bedarf laden loadMore(n) { return () => (diese.Bereichsnummer += 5); }, // Kursmaterial filtern filterMethod(query) { wenn (dieser.timer != null) clearTimeout(dieser.timer); !diese.searchLoad && (diese.searchLoad = true); dieser.timer = setTimeout(() => { diese.Optionen = !!Abfrage ? diese.Kursliste.Filter(el => el.Value.toLowerCase().Includes(Query.toLowerCase())) : diese.Kursliste; : LöscheTimeout(diesen.Timer); this.searchLoad = falsch; diese.Bereichsnummer = 10; dieser.timer = null; }, 500); }, // Auf das Anzeigen und Ausblenden des Auswahl-Dropdown-Felds achten visibleChange(flag) { // Listenflag beim Anzeigen initialisieren && this.filterMethod(""); // Standardwert initialisieren this.rangeNumber = 10; }, // Optionen abrufen async getOptions() { warte auf searchCourseware().then(res => { lass Liste = res.data || []; //Standardmäßig angezeigte Daten this.options = list; //Originaldaten this.courseList = Liste; }); } } } Notiz:
Zusammenfassen:Ich habe in eine neue Arbeitsumgebung gewechselt und beginne nun mit der Arbeit am Backend-Verwaltungssystem. Dabei werde ich in unterschiedlichem Ausmaß auf verschiedene Probleme stoßen. Wie immer werde ich die während der Entwicklung aufgetretenen Probleme in meinen Notizen festhalten. Ein gutes Gedächtnis ist nicht so gut wie ein schlechter Stift. Ich hoffe, jetzt die Samen zu pflanzen und im nächsten Herbst die Früchte zu ernten. JY Dies ist das Ende dieses Artikels über die Implementierung des optimierten Ladens mehrerer ausgewählter Daten in Element. Weitere relevante Inhalte zum Laden mehrerer ausgewählter Daten in Element finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: So konvertieren Sie eine Spalte mit durch Kommas getrennten Werten in Spalten in MySQL
>>: Implementierung der durch Kommas getrennten MySQL-Split-Funktion
In letzter Zeit wurden in neuen Projekten Springc...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis Probleme, die Redux Toolkit lö...
<iframe src=”test.jsp” Breite=”100″ Höhe=”50″ ...
In diesem Artikelbeispiel wird der spezifische Co...
Zum Einfügen von Bildern in HTML sind HTML-Tags f...
MySQL Binlog ist ein sehr wichtiges Protokoll in ...
1 Einleitung Kong ist kein einfaches Produkt. Das...
Inhaltsverzeichnis 1 Eine kurze Einführung in den...
Redis im Docker bereitstellen Installieren Sie zu...
In diesem Artikel wird der spezifische Code von V...
1. Prinzip des Hotlinking 1.1 Vorbereitung der We...
In diesem Artikel wird beschrieben, wie Sie Docke...
Inhaltsverzeichnis 1. Einleitung 2. Tatsächliche ...
Heute sind CSS-Präprozessoren der Standard für di...