Der Prozess der Verwendung von vxe-table zum Erstellen bearbeitbarer Tabellen in Vue

Der Prozess der Verwendung von vxe-table zum Erstellen bearbeitbarer Tabellen in Vue

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 <template #插槽名></template> implementiert werden können, zum Beispiel:

<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:
  • vxe-table Vue-Tabelle Tabellenkomponentenfunktion
  • Beispiel für das Abrufen von Inhalten und Ausfüllen des Formulars beim Klicken auf eine Zeile der Bearbeitungstabelle in der Benutzeroberfläche von vuejs+element
  • Vue+iview-Beispielcode zur Implementierung einer bearbeitbaren Tabelle
  • Vue-gekapselte Plug-In-Methode für bearbeitbare Tabellen

<<:  Beispielanalyse von Linux-Dateiverwaltungsbefehlen [Berechtigungen, Erstellen, Löschen, Kopieren, Verschieben, Suchen usw.]

>>:  Beispiele für die Implementierung und Verwendung von geplanten MySQL-Aufgaben

Artikel empfehlen

Podman bootet den Container automatisch und vergleicht ihn mit Docker

Inhaltsverzeichnis 1. Einführung in Podman 2. Vor...

JS generiert eindeutige ID-Methoden: UUID und NanoID

Inhaltsverzeichnis 1. Warum NanoID UUID ersetzt 2...

Detaillierte Erklärung des Unterschieds zwischen CSS-Link und @import

Wie fügt man CSS in HTML ein? Es gibt drei Möglic...

Tutorial zu HTML-Tabellen-Tags (11): Horizontales Ausrichtungsattribut ALIGN

In horizontaler Richtung können Sie die Ausrichtu...

So verbergen und entfernen Sie Bildlaufleisten in HTML

1. HTML-Tags mit Attributen XML/HTML-CodeInhalt i...

So erstellen Sie eine Testdatenbank mit zig Millionen Testdaten in MySQL

Manchmal müssen Sie basierend auf der offiziell v...

JavaScript-Implementierung eines einfachen Additionsrechners

In diesem Artikelbeispiel wird der spezifische Ja...