Im Projekt gibt es eine Tabelle, die online bearbeitet werden muss. Zunächst wurde die el-table des Elements verwendet, um sie zu implementieren. Die grundlegende Situation in der Zelle besteht darin, auf das Klicken der Zelle zu hören, um ein Span-Tag und ein Eingabe-Tag zu wechseln. Komplexere Zellen verwenden viele bedingte Urteile, um entsprechende Bearbeitungsvorgänge zu implementieren, z. B. Dropdown-Auswahl und Popover-Dialogfeldbearbeitung. Die gesamte Tabelle hat Dutzende von Spalten und mehr als ein Dutzend Daten, aber es gibt bereits deutliche Verzögerungen. Nach vielen Vorgängen (wie dem Ersetzen von el-Eingabe durch native Eingabe, dem Reduzieren von Beurteilungen, dem Reduzieren häufiger Datenwechsel usw.) hat sich die Geschwindigkeit erhöht, aber es gibt immer noch sichtbare Verzögerungen und es ist grundsätzlich unbrauchbar. Dann bin ich zu vxe-table gewechselt und habe die Tabelle neu geschrieben. (Fragen Sie mich nicht, warum ich nicht einfach die bessere vxe-Tabelle verwende. Wer würde beim Schreiben des Codes an Refactoring denken, anstatt zu versuchen, zu optimieren?) Im Folgenden wird der Nutzungsvorgang dokumentiert. 1. Globale Installation npm installiere xe-utils@3 vxe-table@3 In main.js importiert importiere „xe-utils“; importiere VXETable aus „vxe-table“; importiere „vxe-table/lib/style.css“; Vue.use(VXETable); Tatsächlich kann es bei Bedarf geladen werden, um die Größe des Projekts zu verringern, aber ich fand es etwas mühsam, also habe ich es nicht getan. Wenn Sie mehr wissen möchten, können Sie auf den folgenden Link klicken, um ~ vue-table bei Bedarf zu laden anzuzeigen. 2. Grundlegende Verwendung <Vorlage> <vxe-Tabelle :align="allesAusrichten" :data="Tabellendaten"> <vxe-table-column Typ="seq" Breite="60"></vxe-table-column> <vxe-table-column Feld="Name" Titel="Name"></vxe-table-column> <vxe-table-column field="desc" title="Beschreibung"></vxe-table-column> <vxe-table-column field="link" title="Link"></vxe-table-column> </vxe-Tabelle> </Vorlage> <Skript> Standard exportieren { Daten () { zurückkehren { allAlign: null, Tabellendaten: [ { Name: "html", Beschreibung: 'Hypertext Markup Language', Link: „https://www.runoob.com/html/html-tutorial.html“ }, { Name: "css", Beschreibung: 'Cascading Style Sheets', Link: „https://www.runoob.com/css/css-intro.html“ }, { Name: "js", desc: 'JavaScript', Link: „https://www.runoob.com/js/js-tutorial.html“ } ] } } } </Skript> Das oben Genannte reicht aus, um eine einfache Tabelle zu erstellen. Jetzt handelt es sich jedoch nur noch um eine Tabellenanzeige und zum Bearbeiten sind zusätzliche Konfigurationen erforderlich. 3. Implementierungsbearbeitung <Vorlage> <!--Edit-Config-Konfiguration zur Tabelle hinzufügen--> <vxe-table border :data="tableData" :edit-config="{trigger: 'click', mode: 'cell'}"> <!--Reformieren Sie die Zelle vxe-table-column und verwenden Sie edit-render, um die Bearbeitungseigenschaften zu konfigurieren---> <vxe-table-column title="Beschreibung" width="180" fixed="left" field="desc" :edit-render="{name: 'Eingabe', attrs: {typ: 'Text'}}"> </vxe-table-column> </vxe-Tabelle> </Vorlage> Für eine spezifische Konfiguration beachten Sie bitte die API 3. Dropdown-Auswahl implementieren <Vorlage> <vxe-table border :data="tableData" :edit-config="{trigger: 'click', mode: 'cell'}"> <!--Der einzige Unterschied zwischen Edit-Render und Eingabefeldbearbeitung ist die Konfiguration von Edit-Render. Die neue Optionsauswahl wird in Daten hinzugefügt---> <vxe-table-column title="Ob angezeigt werden soll" width="180" field="isShow" :edit-render="{name: 'Auswählen', Optionen: Auswahl, optionProps: {Wert: 'Status', Bezeichnung: 'Bezeichnung'}}"> </vxe-table-column> </vxe-Tabelle> </Vorlage> <Skript> Standard exportieren { Daten () { zurückkehren { allAlign: null, Tabellendaten: [ { Name: "html", Beschreibung: 'Hypertext Markup Language', Link: 'https://www.runoob.com/html/html-tutorial.html', isShow: 1 } //Mehrere Daten auslassen········ ], Auswahl: [ {status: 1, label: 'Ja'}, {status: 0, label: 'Nein'} ] } } } </Skript> 4. Vorlagen anpassen Die benutzerdefinierte vxe-table-Vorlage wird mithilfe von Slots implementiert, die mit <vxe-table-column Feld="Name" Breite="120" Titel="Name" :edit-render="{name: 'Eingabe', attrs: {typ: 'Text'}}"> <!--Verwenden Sie #header, um die Kopfzeile anzupassen --> <Vorlage #header> <span>Name</span> <span style="font-size: 12px; color: #ccc">Technologie</span> </Vorlage> <!--Verwenden Sie #default, um den Inhalt anzupassen--> <Vorlage #default="{row}"> <span>Technologiename</span> <span>{{row.name}}</span> </Vorlage> <!--Verwenden Sie #edit, um die Bearbeitung anzupassen --> <Vorlage #edit="{row}"> <p>Technologiename</p> <Eingabetyp="Text" v-Modell="Zeile.name" Klasse="vxe-default-input"> </Vorlage> </vxe-table-column> Zu Demonstrationszwecken wird die Spalte „Name“ in eine editierbare Spalte umgewandelt und die Spaltenüberschrift, der Standardanzeigeinhalt und der Bearbeitungsanzeigeinhalt werden mit #header, #default bzw. #edit angepasst, wie unten gezeigt: 5. Echtzeit-Speicherfunktion Verwenden Sie die Edit-Closed-Methode von vxe-table, um auf das Schließen des Editierfelds zu warten, und rufen Sie die Update-Schnittstelle auf, um dies zu erreichen. <Vorlage> <vxe-table border :data="tableData" :edit-config="{trigger: 'click', mode: 'cell'}" @edit-closed="Daten aktualisieren"> <vxe-table-column title="Ob angezeigt werden soll" width="180" field="isShow" :edit-render="{name: 'Auswählen', Optionen: Auswahl, optionProps: {Wert: 'Status', Bezeichnung: 'Bezeichnung'}}"> </vxe-table-column> </vxe-Tabelle> </Vorlage> <Skript> Standard exportieren { Daten () { // Weglassen... }, Methoden: { updateData ({ Zeile, Spalte }) { // Die Schnittstelle für Hintergrundaktualisierungen akzeptiert ein Datenelement, übergeben Sie also einfach die Zeile console.log(row); } } } </Skript> Tatsächlich implementiert die offizielle Methode auch die Überprüfung, ob sich der aktuelle Zellinhalt geändert hat, aber unsere Datenstruktur ist etwas kompliziert und die Methode im Quellcode ist nicht sehr anwendbar. Fügen Sie es hier ein. editClosedEvent ({ Zeile, Spalte }) { const $table = this.$refs.xTable const Feld = Spalte.Eigenschaft const cellValue = Zeile[Feld] // Feststellen, ob der Zellenwert geändert wurde if ($table.isUpdateByRow(row, field)) { setzeTimeout(() => { dies.$XModal.message({ Inhalt: „Teilweises Speichern erfolgreich!“ ${Feld}=${Zellenwert}`, Status: „Erfolgreich“ }) // Zelle teilweise in den gespeicherten Zustand aktualisieren $table.reloadRow(row, null, field) }, 300) } } Das Obige ist die grundlegende Schreibmethode zum Implementieren einer bearbeitbaren Tabelle. Lassen Sie mich untersuchen, wie man erkennt, ob die Daten geändert wurden, wenn die Daten sehr tief sind. Zusammenfassend lässt sich sagen, dass die bearbeitbare Tabelle von vxe-table integrierte bearbeitbare Funktionen hat, die nach der Konfiguration verwendet werden können, wodurch verschiedene Beurteilungsschalter von el-table vermieden werden und Bearbeitungsfunktionen eleganter implementiert werden können. Darüber hinaus unterstützt es auch virtuelles Scrollen, was beim Laden großer Datenmengen zu einer besseren Leistung führen kann. Der Nachteil besteht darin, dass beim Festlegen des UI-Diagramms der Tabellenstil neu geschrieben werden muss, was zeitaufwändig ist. Ich schlage vor, dass Sie bei komplexen Tabellen nicht selbst über die Leistungsoptimierung nachdenken. Verwenden Sie einfach vxe-table, um dies in einem Schritt zu erledigen. Dadurch erhöhen sich nur die Kosten für die spätere Rekonstruktion. Das ist eine Lektion, die man auf die harte Tour lernen muss. Dies ist das Ende dieses Artikels über die Verwendung von vxe-table in vue zum Erstellen bearbeitbarer Tabellen. Weitere relevante Inhalte zu bearbeitbaren Vue-Tabellen finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
>>: Beispiele für die Implementierung und Verwendung von geplanten MySQL-Aufgaben
Lasst uns gemeinsam lernen 1. Traditionelle Metho...
Beim Erstellen einer Website habe ich festgestellt...
Als ich heute mit der Baidu-Seite übte, stellte i...
Inhaltsverzeichnis 1. Hintergrundwissen 1. Einfüh...
So können Sie mithilfe des CSS-Stils die Schrifta...
Als ich früher Join-Tabellenabfragen geschrieben ...
Inhaltsverzeichnis 1. So führen Sie stapelweise U...
Alibaba Cloud kauft Server Kaufen Sie einen Cloud...
Inhaltsverzeichnis Namespaces mit gleichem Namen ...
Inhaltsverzeichnis Was sind Hooks? Klassenkompone...
Inhaltsverzeichnis 1. Beispiel 2. Erstelle 100 So...
Die Protokolle in MySQL umfassen: Fehlerprotokoll...
Inhaltsverzeichnis 1. IDEA lädt das Docker-Plugin...
Formularelemente dynamisch hinzufügen Das dynamis...
Automatisierter Build bedeutet, Docker Hub zu ver...