Detaillierte Anwendung des dynamischen Vue-Formulars

Detaillierte Anwendung des dynamischen Vue-Formulars

Überblick

Es gibt viele Formularanforderungen im Hintergrundverwaltungssystem. Wir hoffen, Daten im JSON-Format schreiben und dynamische Formulare über die Vue-Schleife dynamisch rendern zu können. Und es ist möglich, die gerenderten Formulardaten extern abzurufen, um einen Warehousing-Vorgang durchzuführen.

Das V-Modell verstehen

vue-model entspricht der Übergabe eines Werts an das Formularelement und dem externen Abhören von Eingabeereignissen. Wenn wir die Formularkomponente selbst kapseln, können wir daher auch einen Wert übergeben und auf das Eingabeereignis hören, um den Eingabewert zu erhalten.

<Eingabetyp="Text" v-Modell="Ding">

<!-- Äquivalent zu -->
<Eingabetyp="Text" v-bind:Wert="Ding" 
       v-on:input="Ding = $event.target.value">

Geschäftsanwendungsszenarien

Ich habe kürzlich eine Online-Bildungsplattform geschrieben und festgestellt, dass beim Hinzufügen von Kursen im Hintergrund die für jeden Kurs erforderlichen Parameter unterschiedlich waren (einige Kurse hatten keine speziellen Parameter). Die Verwendung eines festen Formulars in diesem Szenario war nicht elegant und der Arbeitsaufwand enorm. Um dieses Problem zu lösen, können wir beim Hinzufügen von Kursen die vom Kursklassifizierungsformular benötigten Parameter dynamisch anzeigen, die eingegebenen Kursparameter abrufen, Daten erstellen und Speichervorgänge durchführen.

Anzeigekategorien durch Komponenten

<!-- Antwort.vue -->
<Vorlage>
  <div>
    <li>
      <div v-if="data.id != 0" @click="getfid(data.id)" :id="data.id"> {{ data.name }}</div>
      <ul v-if="Daten.Kinder && Daten.Kinder.Länge > 0">
        <Antwort v-for="Kind in data.children" :key="Kind.id" :data="Kind"/>
      </ul>
    </li>
  </div>
</Vorlage>

<Skript>

  Bus aus „./bus.js“ importieren;

  Standard exportieren {

    //Name deklarieren: "Antworten",
    Requisiten: ['Daten'],
    //Komponenten deklarieren Komponenten: {},
    //Variable data() deklarieren {
      zurückkehren {
        fid: 0,
      }
    },
    //Benutzerdefinierte Filter Filter: {
      myfilter: Funktion (Wert) {
        Wert = Wert.Slice(0, 3);
        Rückgabewert + "********";
      }
    },
    // Initialisierungsmethode mounted() {
    },
    //Methoden deklarieren methods: {
      //Klicken Sie auf die Kategorie-ID
      getfid: Funktion (fid) {
        dies.fid = fid;
        //Konsole.log(diese.fid);
        bus.$emit("msg", fid);
        localStorage.setItem("fid", diese.fid);

        //Alle Hervorhebungen abbrechen var divs = document.getElementsByClassName("bg");

        //Durchlaufe den Selektor für (var i = divs.length - 1; i >= 0; i--) {

          //Hervorhebung abbrechen divs[i].classList.remove("bg");

        }
        //Markieren Sie zuerst das aktuelle Element var mydiv = document.getElementById(fid);
        //Highlight-Klassenselektor dynamisch hinzufügen mydiv.classList.add("bg");
      }
    }
  }
</Skript>


<Stil>

  ul {
    Polsterung links: 10rem;
    Listenstil: keiner;
  }

  .bg {
    Hintergrund: orange;
    Farbe: weiß;
  }
</Stil>

Verwenden Sie Komponenten von Drittanbietern, um Kategorie-IDs zu überwachen

<!--bus.js-->
Vue von „vue“ importieren

exportiere standardmäßig neues Vue();

Seite „Kurs hinzufügen“

<Vorlage>
  <div>
    <Köpfe></Köpfe>
    <h1>Seite zur Kurseinreichung</h1>
    <Antwort: Daten = "Meine Daten"/>
    <van-cell-gruppe>
      <van-field label="Kurstitel" v-model="title"/>
      <van-field label="Kursbeschreibung" v-model="desc" rows="5" type="textarea"/>
      <van-field label="Kurspreis" v-model="Preis"/>

      <div v-for="(Wert, Schlüssel, Index) in Parametern">
        <van-field :label="Schlüssel" v-model="info[Schlüssel]"/>
      </div>

      <van-button color="gray" @click="addcourse">Kurs speichern</van-button>
    </van-cell-group>
  </div>
</Vorlage>

<Skript>

  //Andere Komponenten importierenimport bus from './bus.js';
  Antwort aus "./reply" importieren;
  Köpfe aus "./heads" importieren;


  Standard exportieren {

    //Komponenten deklarieren: {
      'Antwort': Antwort,
      'Köpfe': Köpfe,
    },
    //Konstruktor erstellt() {
      //Bus überwachen.$on('msg', target => {
        konsole.log(Ziel);
        dies.fid = Ziel;
        wenn (this.cid === 0) {
          dies.get_cate(diese.fid)
        } anders {
          this.$toast.fail("Sie haben den Kurs bereits gespeichert und können die Kategorie nicht erneut auswählen");
          gibt false zurück;
        }
      });
    },
    //Variable data() deklarieren {
      zurückkehren {
        //Daten meineDaten: {},
        //Kurskategorie-ID
        fid: localStorage.getItem("fid"),
        Titel: "",
        Preis: "",
        Beschreibung: "",
        CID: 0,
        Videos: [],
        videosrc: "",
        Parameter: {},
        Information: {}
      }
    },
    // Initialisierungsmethode mounted() {
      dies.get_data();
    },
    //Methoden deklarieren methods: {
      get_cate(fid) {
        dies.axios.get('http://localhost:5000/getcate/', {params: {'fid': fid}}).dann(Ergebnis => {
          var myparams = result.data.params;
          wenn (myparams === '') {
            meineparams = null
          }
          meineparams = JSON.parse(meineparams)
          diese.params = meineparams

          für (var Schlüssel in this.params) {
            dies.$set(diese.info, Schlüssel, '')
          }
          console.log(diese.info)
        })
      },
      //Kurs hinzufügen addcourse: function () {
        var Listen = [];
        für (var-Schlüssel in this.info) {
          lists.push({'Schlüssel': Schlüssel, 'Wert': this.info[Schlüssel], 'Bezeichnung': this.params[Schlüssel]})
        }

        var list_str = JSON.stringify(Listen)

        var data_post = {
          fid: diese.fid,
          Titel: dieser.Titel,
          Beschreibung: diese.Beschreibung,
          Preis: dieser.Preis,
          ID: localStorage.getItem("Benutzer-ID"),
        }
        wenn (Listenlänge > 0) {
          Datenpost = {
            fid: diese.fid,
            Titel: dieser.Titel,
            Beschreibung: diese.Beschreibung,
            Preis: dieser.Preis,
            ID: localStorage.getItem("Benutzer-ID"),
            Parameter:list_str
          }
        }

        dieser.axios.post(
          „http://localhost:5000/addcourse/“,
          dies.qs.stringify(data_post)).then((Ergebnis) => {
          wenn (Ergebnis.Daten.Code === 200) {
            this.$toast.success('Kurs erfolgreich hinzugefügt');
            dies.cid = Ergebnis.Daten.cid;
          } anders {
            dies.$toast.fail(result.data.msg);
          }
        });
      },
      //Daten abrufen get_data: function () {
        //Anfrage senden this.axios.get(
          'http://localhost:5000/catelist/').dann((Ergebnis) => {
          console.log(Ergebnis);
          //Deklariere den Stammknoten var mytree = {'id': 0, name: ""};
          mytree['Kinder'] = Ergebnis.Daten;
          dies.meineDaten = meinBaum;
          konsole.log(diese.meinedaten);
        });
      }
    }
  }
</Skript>


<Stilbereich>

  ul {
    Polsterung links: 10rem;
    Listenstil: keiner;
  }

</Stil>

Zusammenfassung

Einfach ausgedrückt: Wenn wir beim Hinzufügen eines Kurses eine Kategorie auswählen, werden die Parameter, die wir unter dieser Kategorie übergeben müssen, dynamisch in Form eines Formulars angezeigt, sodass Benutzer Kurse hinzufügen und die Effizienz verbessern können.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Vue-Methode zur Entwicklung dynamischer Formulare
  • Generieren Sie dynamische Formulare mit Vue
  • Strategiemodus zum Implementieren der dynamischen Formularvalidierungsmethode von Vue
  • Detaillierte Erläuterung des dynamischen Formulars und der dynamischen Tabelle von Vue+Element (Backend sendet Konfiguration, Front-End generiert dynamisch)
  • Implementieren Sie eine dynamische Formularvalidierungsfunktion basierend auf Vue+elementUI (wechseln Sie das Validierungsformat dynamisch entsprechend den Bedingungen).
  • Beispiel zum Erstellen dynamischer Formulare in Vue
  • So implementieren Sie dynamische Beispiele zum Hinzufügen, Löschen, Ändern und Abfragen von Formularen in vue2
  • Vue + ElementUI realisiert die Methode des dynamischen Renderings und der visuellen Konfiguration von Formularen
  • Vue+Element realisiert die dynamische Generierung neuer Formulare und fügt Verifizierungsfunktionen hinzu
  • Vue+Element zum dynamischen Laden des Formulars

<<:  Regeln für die Gestaltung des Anmeldeformulars

>>:  „Implizite Konvertierung“ von MySQL 5.6 führt zu Indexfehlern und ungenauen Daten

Artikel empfehlen

37 Tipps für ein gutes User Interface Design (mit Bildern)

1. Versuchen Sie, ein einspaltiges statt eines meh...

Vue implementiert einen einfachen Lupeneffekt

In diesem Artikelbeispiel wird der spezifische Co...

Lernen Sie MySQL Index Pushdown in fünf Minuten

Inhaltsverzeichnis Vorwort Was ist Index-Pushdown...

CSS-Lösung für mehrspaltiges Layout

1. Feste Breite + adaptiv Erwarteter Effekt: fest...

Tutorial zur Installation von MySQL 5.7.18 unter Windows 10

In diesem Tutorial erfahren Sie alles über die In...

So verwenden Sie Standardwerte für Variablen in SASS

Bei in SASS definierten Variablen überschreibt de...

So installieren Sie eine MySQL-Datenbank unter Ubuntu

Ubuntu ist ein kostenloses und quelloffenes Deskt...

Docker Swarm von der Bereitstellung bis zum grundlegenden Betrieb

Über Docker Swarm Docker Swarm besteht aus zwei T...

mysql5.6.zip-Format komprimierte Version Installations-Grafik-Tutorial

Vorwort: MySQL ist ein relationales Datenbankverw...

In einem Artikel erfahren Sie, wie Sie ein Vue-Plugin schreiben

Inhaltsverzeichnis Was ist ein Plugin Plugins sch...

CocosCreator-Tutorial für den Einstieg: Erstellen Sie Ihr erstes Spiel mit TS

Inhaltsverzeichnis Prämisse TypeScript vs. JavaSc...