In diesem Artikel wird hauptsächlich das Vue-Projekt vorgestellt. Unter der Voraussetzung, dass Elemente eingeführt werden, werden die Komponenten zweimal gekapselt, um ein direktes Layout über Konfigurationselemente zu erreichen. 1. Abfragebedingungs-Komponentenbildung In Kombination mit der Verwendung von EventBus.js ist die Ereignisübermittlung effizienter und verschiedene komplexe Lebenszyklusabhängigkeiten können vermieden werden. 1.1 dataForm-Codebeispiel // dataForm.vue <Vorlage> <el-Zeile> <input-form v-for="(item,index) in options" :key="'dataForm_'+index"> <!-- Eingabefeld--> <Eingabeformular :Schlüssel="Index" v-if="Artikel.Typ == 'Eingabe'" :Daten='Artikel' ></Eingabeformular> </el-row> </Vorlage> <Skript> importiere EventBus aus "@/assets/js/eventBus.js" importiere InputForm "@/components/dataForm/InputForm" Standard exportieren { Komponenten: Eingabeformular, }, Requisiten: { /** * Formularkonfigurationselemente * @param {Object} Option Konfigurationsparameter wie folgt: * Typ: Formularelementtyp, Zeichenfolge, optionale Werteingabe */ Optionen: Typ: Array, Standard() { zurückkehren []; }, }, }, Daten() { zurückkehren {} }, erstellt() { // Dies dient hauptsächlich dazu, das Anzeigen und Ausblenden anderer Unterkomponenten in der Dropdown-Box zu realisieren EventBus.$on("refreshDataForm", e => { diese.refreshDataForm(e); }); }, // Seitenzerstörungsereignis destruction beforeDestroy() { EventBus.$off("refreshDataForm") EventBus.$off("HandleClick") }, Methoden: { // Formulardaten aktualisieren refreshDataForm(item) { let data = diese.Optionen Daten.fürJeden((e, i) => { wenn (Artikel.Typ == e.Typ && Artikel.Name == e.Name) { diese.Optionen[i] = Artikel } }) }, // Das Klickereignis der untergeordneten Komponente reagiert auf die übergeordnete Komponente und die Daten werden übertragen handleClick(data) { EventBus.$emit("HandleClick",Daten) }, //Formatieren Sie die Formulardaten (Sie können überprüfen, ob die erforderlichen Elemente erforderlich sind) getDataForm() { let data = diese.Optionen let formObj = {} lass Fehler = '' versuchen { Daten.fürJedes(e => { wenn (e.Typ === ''Eingabe) { wenn (e.erfordern && !e.inhalt) { Fehler = 'Bitte eingeben' + e.label Fehler auslösen } formObj[e.name] = e.inhalt } sonst wenn (e.type === 'select' || e.type === 'dataSelect') { wenn (e.erfordern && !e.inhalt) { Fehler = 'Bitte wählen' + e.label Fehler auslösen } formObj[e.name] = e.inhalt } sonst wenn (e.type === 'date' || e.type === 'dataRadio') { wenn (e.erfordern && !e.inhalt) { Fehler = 'Bitte wählen' + e.label Fehler auslösen } formObj[e.beginName] = e.beginRegTime formObj[e.endName] = e.endRegTime } sonst wenn (e.type === 'image') { formObj[e.name] = e.datei || e.inhalt } sonst wenn (e.type === 'upload') { formObj[e.name] = e.datei || e.inhalt if (e.delFileName) { // Lösche die Anhangssammlung und den benutzerdefinierten Namen und den Standardnamen formObj[e.delFileName] = e.delFileIds.join(',') } anders { formObj['delFileName'] = e.delFileIds.join(',') } } }) RückgabeformularObj } Fehler abfangen { this.$message({ Nachricht:Fehler, Typ: 'Fehler'}) } } } } 1.2 Untergruppe inputForm.vue Hinweis: Die hier referenzierten Komponenten können auch einzeln von der Seite referenziert werden. <Vorlage> <el-col> <el-col :span="data.boxSpan?data.boxSpan:boxSpan" v-if="!data.isHide"> <el-col :span="data.infoSpan?data.infoSpan:infoSpan" > <el-col :span="data.infoSpan?data.infoSpan:infoSpan" v-if="data.labelSpan!=0"> <label class="el-form-item_label" :class="{'erfordern': data.erfordern}" v-html="data.label"></label> </el-col> <el-col :span="data.contentSpan?data.contentSpan:contentSpan" v-if="data.contentSpan!=0"> <el-input :class="{'base_textarea': data.textarea}" v-modle.trim="data.content" :type="data.textarea?'textarea':''" :disable="data.readOnly" :placeholder="setPlaceholder" maxlength="200"></el-input> </el-col> </el-col> <span v-text="Titel"></span> </div> </el-col> </Vorlage> <Skript> Standard exportieren { Requisiten: { // Geben Sie die Eingabe ein Eingabefeldtyp: { Typ: Zeichenfolge, Standard: „Eingabe“ }, //Standard-Zaunlayout 8/24 boxSpan: { Typ: Nummer, Standard: 8 }, // Standard-Zaunlayout 24/24 infoSpan: { Typ: Nummer, Standard: 24 }, //Standard-Zaunlayout 8/24 Spanne: { Typ: Nummer, Standard: 8 }, //Standard-Zaunlayout 16/24 Inhaltsspanne: { Typ: Nummer, Standard: 16 }, /** * Name Schlüsselwort * Typ Formulartyp * Bezeichnung Formulartitel * Inhalt Formularinhalt * readOnly schreibgeschützt Standard nein * isHide versteckt Standard nein * Textbereich Texttyp Standard nein **/ Daten: { Typ: Objekt, Standard() { zurückkehren [] } } }, berechnet: { setzePlatzhalter() { wenn(diese.Daten.NurLesezugriff && !diese.Daten.Inhalt) { zurückkehren '' } return 'Bitte eingeben' } } } </Skript> <Stilbereich> // Erforderlich style.require::after { Inhalt: '*'; Farbe: rot; } // Flex-Layout-Titel vertikal zentriert.el-form-item__label { schweben: rechts; Rand unten: 0; Zeilenhöhe: 20px; Anzeige: Flex; Elemente ausrichten: zentrieren; Mindesthöhe: 40px; } </Stil> 1.3 Verweis auf übergeordnete Seiten und deren Verwendung <Vorlage> <el-Zeile> <Datenformular: Optionen = 'Sucharray', Ref = 'Sucharray'></Eingabeformular> </el-row> </Vorlage> <Skript> importiere EventBus aus "@/assets/js/eventBus.js" importiere DataForm "@/components/dataForm/dataForm" Standard exportieren { Komponenten: Datenformular }, Daten() { zurückkehren { // Menükonfiguration abfragen searchArray: [ { Name: "Personenname", Typ: "Eingabe", Bezeichnung: 'Benutzername', Inhalt: '' }, { Name: 'personName2', Typ: "Eingabe", Bezeichnung: 'Benutzername 2', Inhalt: '' } ] } }, erstellt() { // Auf Parameter der untergeordneten Komponente warten EventBus.$on('refreshDataForm', e => { diese.refreshDataForm(e) }) }, zerstört() { // Zerstöre den Unterkomponentenparameter, der auf EventBus.$off('refreshDataForm') lauscht. }, Methoden: { // Auf Unterkomponentenoperationen warten refreshDataForm(e) { //Logikcode this.$forceUpdate() }, //Datenabfrage handleQuery() { // Komponentenparameter abrufen und zum JSON-Format zurückkehren let searchArray = this.$refs.searchArray.getDataForm() // Wenn erforderliche Elemente vorhanden sind, ist der Rückgabewert null und ein Popup-Fenster wird angezeigt, wenn (!searchArray) { zurückkehren } //Schnittstellenlogik abfragen} } } </Skript> 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 MySQL 8.0-Richtlinie zum Ablauf von Passwörtern
1. Nachfrage Ein Bild bewegt sich in einer Endlos...
1. Einleitung Wenn Sie im Projekt auf eine Anford...
Auch heute noch sind Taskleistensymbole ein magis...
1. Beim Entwerfen einer Webseite ist das Bestimmen...
1. Klicken Sie auf den Server-Host und dann in de...
Überblick Das Rahmendiagramm dieses Artikels ist ...
In diesem Artikel wird der spezifische JS-Code zu...
In diesem Artikel wird die spezifische Methode zu...
Installieren Sie MySQL zum ersten Mal auf Ihrem C...
Frage Wie können wir bei einer bestimmten MySQL-V...
Sechs Schritte von JDBC: 1. Registrieren Sie den ...
Die virtuelle Maschine, die ich von einer bestimm...
Der Befehl „Explain“ ist der erste empfohlene Bef...
In diesem Artikel wird die Installations- und Kon...
1. Übergeordnetes Div definiert Pseudoklassen: af...