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

Asynchrone JS ES6-Lösung

Inhaltsverzeichnis Erste Verwendung der Callback-...

Vue implementiert einfache Kommentarfunktion

In diesem Artikel wird der spezifische Code von V...

Installieren Sie MySQL 5.7 unter Ubuntu 18.04

Dieser Artikel wurde unter Bezugnahme auf die off...

Beispiel für die Validierung eines JavaScript-Formulars

HTML-Formulare werden häufig verwendet, um Benutz...

Eine kurze Diskussion zum Implementierungsprinzip des Vue-Slots

Inhaltsverzeichnis 1. Beispielcode 2. Sehen Sie d...

Detaillierte Erklärung zur Verwendung der Element-el-button-Button-Komponente

1. Hintergrund Schaltflächen werden sehr häufig v...

Diskussion über die numerische Begrenzung des OL-Elements im HTML-Dokument

Im Allgemeinen ist es unwahrscheinlich, dass Sie ...

Detaillierte Erklärung zum Ein- und Aussteigen aus dem Docker-Container

1 Starten Sie den Docker-Dienst Zuerst müssen Sie...