Aufgrund von Geschäftsanpassungen im Unternehmen hat sich die Logik des vorherigen superlangen Formulars in letzter Zeit stark geändert. Daher plane ich, es umzugestalten (es wurde zuvor von einem Backend-Mitarbeiter geschrieben, der das Unternehmen verlassen hat, und es gibt keine Kommentare. Eine Komponente umfasst mehr als 4.000 Zeilen, und mir fehlt wirklich die Energie, das zu tun). Der Einfachheit halber habe ich das Projekt in 14 Komponenten unterteilt und vereinfacht. Gesamtidee
StartHier nehmen wir als Beispiel die Aufteilung zweier Komponenten: form1, form2 (der Einfachheit halber kritisieren Sie die Benennung bitte nicht). Warum die beiden Komponenten hier an Form, Ref und Modell gebunden sind, wird später erklärt (zur Vereinfachung der späteren Wartung). // form1-Komponente <template> <el-form ref="Formular" :model="Formular" Beschriftungsbreite = "10px" > <el-form-item label="Name" prop="Name"> <el-input v-model="formular.name" /> </el-form-item> </el-form> </Vorlage> <Skript> Standard exportieren { Name: 'Form1', Requisiten: { bilden: {} }, Daten() { zurückkehren { Regeln: Name: [ { erforderlich: true, Nachricht: ‚Bitte geben Sie Ihren Namen ein‘, Auslöser: ‚unscharf‘ } ] } } }, Methoden: { // Hier wird die übergeordnete Komponente in einer Schleife durchlaufen, um die Validierung aufzurufen validForm() { let result = false this.$refs.form.validate(valid => gültig && (Ergebnis = wahr)) Ergebnis zurückgeben } // Ich habe es hier anders geschrieben, aber es ist ein Promise-Objekt beim Loopen und Prüfen. Da gibt es ein Problem. Ich hoffe, die Großen können mir einen Rat geben. validForm() { // Die Ausgabestruktur hier ist offensichtlich ein Boolescher Wert, aber nach dem Aufruf der Schleife der übergeordneten Komponente ist es ein Promise-Typ, der konvertiert werden muss. return this.$refs.form.validate().catch(e => console.log(e)) } } } </Skript> // form2-Komponente <template> <el-form ref="Formular" :model="Formular" Beschriftungsbreite = "10px" > <el-form-item label="Alter" prop="Alter"> <el-input v-model="form.age" /> </el-form-item> </el-form> </Vorlage> <Skript> Standard exportieren { Name: 'Form2', Requisiten: { bilden: {} }, Daten() { zurückkehren { Regeln: Name: [ { erforderlich: true, Nachricht: ‚Bitte geben Sie Ihr Alter ein‘, Auslöser: ‚unscharf‘ } ] } } }, Methoden: { // Hier wird die übergeordnete Komponente in einer Schleife durchlaufen, um die Validierung aufzurufen validForm() { let result = false this.$refs.form.validate(valid => gültig && (Ergebnis = wahr)) Ergebnis zurückgeben } } } </Skript> Sehen Sie, wie auf die übergeordnete Komponente verwiesen wird // Übergeordnete Komponente <template> <div Klasse="übergeordnet"> <form1 ref="form1" :form="formData.form1" /> <form2 ref="form2" :form="formData.form2" /> <el-button type="primary" @click="save">Fehler</el-button> </div> </Vorlage> <Skript> ... unter Weglassen der Referenz export default { Name: "Elternteil", ... Registrierungsdaten weglassen () { zurückkehren { formData: { form1: {}, form2: {} } } }, } </Skript> Da die Attributnamen form1 und form2 in formData jeweils im Ref der Subform-Komponente verwendet werden, können diese beim Durchlaufen nacheinander gefunden und die Speicherfunktion geändert werden. Der Code lautet wie folgt: Methoden: { speichern () { //Der Schlüsselwert jedes Formularobjekts, d. h. der Referenzwert jedes Formulars const formKeys = Object.keys(this.formData) // Führen Sie die Validierungsmethode für jedes Formular aus const valids = formKeys.map(item => this.$refs[item].validForm()) // Logik, nachdem alle Formulare die Validierung bestanden haben, if (valids.every(item => item)) { konsole.log(11) } } } Warum sind sowohl Ref- als auch Modellkomponenten an das Formular gebunden?
Standard exportieren { Requisiten: { bilden: { erforderlich: wahr, Typ: Objekt, Standard: () => {} }, }, Methoden: { gültigeForm () { let result = false this.$refs.form.validate(valid => gültig && (Ergebnis = wahr)) Ergebnis zurückgeben } } } Referenzieren Sie den Minix in Form1 und Form2 und löschen Sie die entsprechenden Eigenschaften und Methoden in den entsprechenden Komponenten. Abschluss
Dies ist das Ende dieses Artikels darüber, wie Vue+ElementUI mit sehr großen Formularen umgeht. Weitere Informationen darüber, wie Vue+ElementUI mit sehr großen Formularen umgeht, finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
>>: Implementierung der Bereitstellung des Nginx+ModSecurity-Sicherheitsmoduls
MongoDB ist eine Hochleistungsdatenbank, bei der ...
Dies ist eine erweiterte Version. Die Fragen und ...
Inhaltsverzeichnis 1. Installieren und erstellen ...
Inhaltsverzeichnis 1. Geltungsbereich 2. Geltungs...
Betriebssystem: Ubuntu 17.04 64-Bit MySQL-Version...
Dieser Artikel dokumentiert den Installations- un...
Befehle zur Linux-Onlineinstallation: yum install...
Vorwort Die Verzögerung der MySQL Master-Slave-Re...
Hyperlink Hyperlinks sind die am häufigsten verwen...
In diesem Artikel wird das Shell-Skript von mysql...
1. Warum müssen wir Tabellen und Partitionen auft...
Inhaltsverzeichnis Webkomponenten benutzerdefinie...
Grundlegende Einführung Merkmale Flexbox ist ein ...
In diesem Artikel finden Sie das Tutorial zur Ins...
Implementierungsvorbereitung # Der Dateipfad muss...