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

Eine kurze Analyse des Funktionsaufrufprozesses unter der ARM-Architektur

Inhaltsverzeichnis 1. Hintergrundwissen 1. Einfüh...

ReactHooks Batch-Update-Status und Abrufen von Routenparametern Beispielanalyse

Inhaltsverzeichnis 1. So führen Sie stapelweise U...

Erläuterung der Zusammenführung von TypeScript-Namespaces

Inhaltsverzeichnis Namespaces mit gleichem Namen ...

Detaillierte Erklärung zu React Hooks

Inhaltsverzeichnis Was sind Hooks? Klassenkompone...

Detaillierte Beschreibung der Funktion von new in JS

Inhaltsverzeichnis 1. Beispiel 2. Erstelle 100 So...