Manchmal stoßen wir auf eine solche Anforderung, d. h., der Benutzer kann ein ähnliches Formular hinzufügen, indem er auf eine Schaltfläche klickt, und es einmal pro Klick hinzufügen. Dann müssen Sie Deep Copy, Vue.js+ElementUI usw. verwenden. Die Wirkung ist ungefähr so: Ein Formular hat eine Dropdown-Box und zwei Eingabefelder. Klicken Sie nun auf die Schaltfläche „Formular hinzufügen“ und ein weiteres Formular wird angezeigt. Klicken Sie auf „Formular übermitteln“, um die Werte der beiden Formulare gleichzeitig zu übermitteln. Der Code lautet wie folgt: <Vorlage> <div> <div Stil="Rand: 10px 0"> <el-button type="primary" @click="addForm">Formular hinzufügen</el-button> <el-button type="primary" @click="submit">Formular absenden</el-button> </div> <div v-for="(Element, Index) in Liste" :Schlüssel="Index"> <el-form ref="Formular" label-width="80px"> <el-form-item label="Live-Übertragungsplattform"> <el-Auswahl v-Modell="Artikel.Plattform" :Schlüssel="Index" Platzhalter="Bitte wählen Sie die Live-Streaming-Plattform aus" > <el-Option :label="item2.Plattformname" v-for="(item2, index2) in PlattformNameList" :Schlüssel="index2" :Wert="item2.Plattformwert" > </el-Option> </el-Auswahl> </el-form-item> <el-form-item label="Anzahl der Fans"> <el-input v-model="item.fanMount" :key="index"></el-input> </el-form-item> <el-form-item label="Plattform-ID"> <el-input v-model="item.platformId" :key="index"></el-input> </el-form-item> </el-form> </div> </div> </Vorlage> <Skript> Standard exportieren { Daten() { zurückkehren { Titel: „Inspektionsinhaltsseite“, personObj: { Plattform: "", Lüfterhalterung: "", Plattform-ID: "", }, PlattformNameList: [ { Plattformname: „Kuaishou“, Plattformwert: "1", }, { Plattformname: „TikTok“, Plattformwert: "2", }, { Plattformname: „Taobao“, Plattformwert: "3", }, ], Liste: [ { Plattform: "", Lüfterhalterung: "", Plattform-ID: "", }, ], }; }, Methoden: { //tiefe Kopie cloneObj(obj) { lass es bleiben; wenn (Array.isArray(obj)) { //Erstelle ein leeres Array ret = []; für (lass i = 0; i < Objektlänge; i++) { ret[i] = dieses.cloneObj(obj[i]); } Rückkehr ret; } sonst wenn (Object.prototype.toString.call(obj) === "[Objekt Objekt]") { ret = {}; für (lass i in obj) { ret[i] = dieses.cloneObj(obj[i]); } Rückkehr ret; } anders { gibt Objekt zurück; } }, //Formular hinzufügen addForm() { lass arr = dieses.cloneObj(dieses.personObj); Konsole.log("arr", arr); dies.Liste.push(arr); }, //Formular abschicken submit() { console.log("diese.Liste", diese.Liste); }, }, }; </Skript> Code-Analyse: Die Konsole druckt die folgenden Ergebnisse: Nehmen wir nun an, dass mehrere Formulare hinzugefügt werden müssen, anstatt sie einzeln hinzuzufügen. Der Effekt ist wie folgt. Es gibt drei Schaltflächen und zu Beginn wird ein Formular angezeigt. Wenn ich auf die Schaltfläche „3“ klicke, werden auf der Benutzeroberfläche insgesamt drei Formulare angezeigt, wie unten dargestellt: Der Code lautet wie folgt: <Vorlage> <div> <div Stil="Rand: 10px 0"> <el-button type="primary" @click="add(3)">3</el-button> <el-button type="primary" @click="addForm">Formular hinzufügen</el-button> <el-button type="primary" @click="submit">Formular absenden</el-button> </div> <div v-for="(Element, Index) in Liste" :Schlüssel="Index"> <el-form ref="Formular" label-width="80px"> <el-form-item label="Live-Übertragungsplattform"> <el-Auswahl v-Modell="Artikel.Plattform" :Schlüssel="Index" Platzhalter="Bitte wählen Sie die Live-Streaming-Plattform aus" > <el-Option :label="item2.Plattformname" v-for="(item2, index2) in PlattformNameList" :Schlüssel="index2" :Wert="item2.Plattformwert" > </el-Option> </el-Auswahl> </el-form-item> <el-form-item label="Anzahl der Fans"> <el-input v-model="item.fanMount" :key="index"></el-input> </el-form-item> <el-form-item label="Plattform-ID"> <el-input v-model="item.platformId" :key="index"></el-input> </el-form-item> </el-form> </div> </div> </Vorlage> <Skript> Standard exportieren { Daten() { zurückkehren { Titel: „Inspektionsinhaltsseite“, personObj: { Plattform: "", Lüfterhalterung: "", Plattform-ID: "", }, PlattformNameList: [ { Plattformname: „Kuaishou“, Plattformwert: "1", }, { Plattformname: „TikTok“, Plattformwert: "2", }, { Plattformname: „Taobao“, Plattformwert: "3", }, ], Liste: [ { Plattform: "", Lüfterhalterung: "", Plattform-ID: "", }, ], }; }, Methoden: { Klonobjekt(Objekt) { lass es bleiben; wenn (Array.isArray(obj)) { //Erstelle ein leeres Array ret = []; für (lass i = 0; i < Objektlänge; i++) { ret[i] = dieses.cloneObj(obj[i]); } Rückkehr ret; } sonst wenn (Object.prototype.toString.call(obj) === "[Objekt Objekt]") { ret = {}; für (lass i in obj) { ret[i] = dieses.cloneObj(obj[i]); } Rückkehr ret; } anders { gibt Objekt zurück; } }, hinzufügen(a) { dies.addForm(a); }, addForm(a) { lass arr = dieses.cloneObj(dieses.personObj); Konsole.log("arr", arr); dies.Liste.push(arr); A--; wenn (a > 0) { dies.addForm(a - 1); } }, einreichen() { console.log("diese.Liste", diese.Liste); }, }, }; </Skript> <Stil> </Stil> Die Codeanalyse ist wie folgt: Wenn Sie auf die Add-Methode der Schaltfläche klicken, wird die Gesamtzahl der Formulare übergeben. Anschließend werden in der addForm-Methode zum Hinzufügen des Formulars Selbstdekrement, Beurteilung und Rekursion verwendet, um das Kopieren beim kontinuierlichen Klicken zu implementieren. Dann versuchen wir den Effekt Drucken Sie die Konsole Dies ist das Ende dieses Artikels über das Beispiel für die Schleife von Formularelementen in Vue. Weitere relevante Inhalte zu Vue-Schleifenformularelementen finden Sie in früheren Artikeln auf 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:
|
>>: Über MySQL müssen Sie die Datentypen und Operationstabellen kennen
1. HTML-Code Code kopieren Der Code lautet wie fo...
Inhaltsverzeichnis 1. Installation 2. Es gibt kei...
1. Docker ps listet Container auf 2. Docker cp ko...
In diesem Artikel werden die Installations- und K...
1. Feste Breite + adaptiv Erwarteter Effekt: fest...
Inhaltsverzeichnis 1. Array-Deduplizierung 2. Ded...
1. Was ist eine Marge? Mit dem Rand wird die Abstä...
Was ist Keepalive? Bei der normalen Entwicklung m...
1. Wenn Sie DOM-Elemente einfügen, aktualisieren ...
Aktualisierung der Ereignisantwort: Aktualisierun...
Bei Verwendung des Tags <html:reset> stellen...
Bei der täglichen Wartung werden Threads häufig b...
MySQL 5.7-Version: Methode 1: Verwenden Sie den B...
CSS Houdini gilt als die aufregendste Innovation ...
In diesem Artikel wird der detaillierte Vorgang z...