HintergrundDie übliche Vorgehensweise bei der Verwendung von Dialogfeldern in einem Projekt besteht darin, das Dialogfeld in eine Komponente einzukapseln, es dort zu importieren, wo es verwendet wird, und es dann der Vorlage hinzuzufügen. Mithilfe von visible.sync wird die Anzeige/Ausblendung des Dialogfelds gesteuert und auf das Bestätigungsereignis gewartet, um zu verarbeiten, wenn der Benutzer auf „OK“ klickt. wie folgt: <Bestätigungsdialog v-if="Dialogsichtbar bestätigen" :Titel="$t(`mineData.tips.deleteDataset`)" :visible.sync="Dialogsichtbar bestätigen" @confirm="confimHandler" ></Bestätigungsdialog> Im gekapselten Dialog ist zudem ein Visible-Update beim Schließen und das Auslösen des Confirm-Events beim Bestätigen notwendig: Methoden: { schließen() { dies.$emit("update:sichtbar", false); }, bestätigen() { dies.schließen(); dies.$emit("bestätigen"); } } Dieser Ansatz führt nicht nur dazu, dass alle Dialogkomponenten beim Initialisieren der Seite eingeführt werden, was sich auf die Ladegeschwindigkeit auswirkt, sondern verursacht auch viele Probleme, wenn viele Dialogfelder in die Seite eingeführt werden, was die Seite sehr unübersichtlich macht: Sie müssen für jedes Dialogfeld einen HTML-Abschnitt einfügen, für jedes Dialogfeld eine separate sichtbare Variable verwalten, für jedes Dialogfeld einen Bestätigungsereignis-Listener hinzufügen usw. Die meisten dieser Vorgänge sind für das Geschäft irrelevant und sie sind sich äußerst ähnlich. Gibt es also eine Möglichkeit, einen Dialog dynamisch über JS zu erstellen? Dialog erstellen("dialog bestätigen.vue"); Genau wie oben können Sie das Dialogfeld entsprechend dem Dateinamen öffnen, ohne „sichtbar“ zu definieren und eine Reihe von HTML- und Ereignisrückrufen hinzuzufügen, und Sie müssen nicht einmal zuerst die Dialogkomponente einführen! Ist das nicht einfach? Bist du aufgeregt? Lesen Sie weiter. erreichen 1. Gekapseltes /utils/dialogControl.jsVue von „vue“ importieren asynchrone Funktion createDialog (Dateiname, Daten) { const dialogsContext = erfordern.context( '../components', // Definieren Sie den Umfang der Suchdatei true, /([a-zA-Z\-0-9]+)\.vue$/, // Dateinamenregel „lazy“ definieren ) // Suche die Datei mit dem übergebenen Namen und lade sie. let match = dialogsContext.keys().find((key) => key.includes(fileName)) wenn (!match) zurückgeben let componentContext = warte auf dialogsContext(match) let temp = componentContext.default returniere neues Promise(Funktion (auflösen, ablehnen) { //Konfigurationsparameter initialisieren let opt = { Daten } let Komponente = Objekt.assign({}, temp) let initData = { sichtbar: wahr } Objekt.assign(initData, Komponente.data()) opt.data und Object.assign(initData, JSON.parse(JSON.stringify(opt.data))) Komponente.Daten = Funktion () { returniere initData } // Einen Konstruktor erstellen, um eine Instanz zu erstellen und zu mounten let DialogC = Vue.extend(component) let dialog = neuer DialogC() // Ereignis schließen let _onClose = dialog.$options.methods.onClose dialog.onClose = Funktion () { lösen() dialog.$destroy() _onClose und _onClose.call(Dialog) Dokument.Body.RemoveChild(Dialog.$el) } // Rückrufereignis let _onCallback = dialog.$options.methods.onCallback dialog.onCallback = Funktion (...arg) { versuchen { _onCallback und _onCallback() auflösen(Argument) dialog.$destroy() _onClose und _onClose.call(Dialog) Dokument.Body.RemoveChild(Dialog.$el) } fangen (e) { console.log(e) } } dialog.$mount() // Durch Klicken auf die Schaltfläche „Schließen“ wird die Sichtbarkeit geändert dialog.$watch('sichtbar', function (n, o) { dialog === false && dialog.onClose() }) Dokument.Body.AnhängenUntergeordnetesElement(dialog.$el) }) } export { erstelleDialog } veranschaulichen: 2. Erhalten Sie einen Dateinamenparameter, der mit der zu öffnenden Dialogdatei übereinstimmt, und der Datenparameter sind die an das Dialogfeld übergebenen Daten, die in die Daten der Komponente integriert werden 3. Verwenden Sie die sichtbare Variable, um die Anzeige/Ausblendung des Dialogfelds zu steuern 4. Definieren Sie eine onClose-Methode zum Schließen des Dialogfelds, mit der das Dialogfeld geschlossen werden kann 5. Die onCallback-Methode wird verwendet, um Werte an die übergeordnete Komponente zu übergeben, die das Dialogfeld aufruft, z. B. um Werte an die übergeordnete Komponente zu übergeben, wenn auf die Schaltfläche „OK“ geklickt wird 2.Dialogdateidefinition Beispielsweise wird in /components/ConfirmDialog.vue die sichtbare Variable zum Steuern der Anzeige/Ausblenden verwendet, onClose behandelt das Schließereignis und der Rückruf der Bestätigungsschaltfläche ist onCallback (was mit der Definition in dialogControl.js übereinstimmt). <Vorlage> <el-dialog title="Eingabeaufforderung" :visible.sync="sichtbar" width="30%"> <span>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Nichts davon perspiciatis fugiat molestiae provident accusantium repudiandae fugit Minima, eaque, repellat quibusdam iste sed ad? Debitis qui praesentium minus Vorfall ess! <span slot="Fußzeile" class="dialog-footer"> <el-button @click="onClose">Abbrechen</el-button> <el-button type="primary" @click="onCallback(true)">OK</el-button> </span> </el-dialog> </Vorlage> <Skript> Standard exportieren { Daten () { zurückkehren {} }, Methoden: { }} </Skript> 3. NutzungFühren Sie die Methode createDialog in dialogControl ein und übergeben Sie den Dateinamen direkt, um sie zu öffnen. Wenn weitere Attribute vorhanden sind, fügen Sie diese in Form von Schlüssel-Wert-Paaren in den zweiten Parameter ein. Diese Attribute werden in die Daten der Dialogkomponente integriert, sodass diese Attribute direkt in der Dialogkomponente verwendet werden können. Die Methode createDialog ruft ein Promise-Objekt ab und ihre then-Methode kann das per Confirm zurückgegebene Ergebnis abrufen. <Vorlage> <div> <h1>Dies ist eine Showseite</h1> <el-button type="primary" @click="openDialog">Öffnen</el-button> </div> </Vorlage> <Skript> importiere { createDialog } aus "@/utils/dialogControl"; Standard exportieren { Methoden: { openDialog() { let dialog = createDialog("confirm-dialog.vue"); dialog.then((v) => { wenn (v) { console.info("OK"); } }); }, }, }; </Skript> Die Wirkung ist wie folgt: Wenn Sie zum Aufrufen des Dialogfelds immer noch die Methode vom Anfang des Artikels verwenden, dann beeilen Sie sich und verwenden Sie diese Methode! siehe: https://www.freesion.com/article/43311065748/ Dies ist das Ende dieses Artikels über die Vorgehensweise zum dynamischen Erstellen von Dialogen basierend auf Dateinamen in vue+el-element. Weitere relevante Informationen zum dynamischen Erstellen von Dialoginhalten mit el-element finden Sie in den vorherigen Artikeln von 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:
|
<<: Einführung in die Stapelverarbeitung von virtuellen Netzwerkkarten unter CentOS 7.6
>>: HTML-Framework_Powernode Java Academy
1. Einführung in DockerUI DockerUI basiert auf de...
Inhaltsverzeichnis Funktionale Komponenten So sch...
Verwenden von mock.js im Vue-Projekt Auswahl des ...
Tatsächlich fragen wir uns jeden Tag, wann IE6 wi...
Verzögertes Laden (Lazy Loading) und Vorladen sin...
Inhaltsverzeichnis Überblick Überprüfen von setTi...
Schauen wir uns zunächst eine Kastanie an EXPLAIN...
In diesem Artikel wird die Installationsmethode d...
OBS studio ist cool, aber JavaScript ist cooler. ...
1. Installieren Sie Apache # yum install -y httpd...
Neuere Linux-Distributionen verfügen nicht mehr ü...
Im späteren Stadium der Ausnutzung von SQL-Inject...
Was ist JConsole JConsole wurde in Java 5 eingefü...
In diesem Artikel wird beschrieben, wie Sie mit D...
Das Definieren des Datenfeldtyps in MySQL ist für...