


Beispiel für die Implementierung eines ereignisgesteuerten VUE2-Popup-Fensters
In diesem Artikel wird hauptsächlich das Beispiel eines in VUE2 implementierten ereignisgesteuerten Popup-Fensters vorgestellt. Der Herausgeber findet es recht gut, daher werde ich es jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Herausgeber und schauen wir uns das an. Ich hoffe, es kann allen helfen.
Vor ein paar Tagen wollte ich wissen, wie man eine Popup-Fensterkomponente in Vue schreibt
Es gibt zwei mögliche Schreibmethoden:
1. Statusverwaltung, wenn das Popup-Fenster Die Komponente wird in der Stammkomponente platziert und vuex wird verwendet, um das Ein- und Ausblenden der Komponente zu verwalten. Platzieren Sie es in der Komponente und steuern Sie es durch Hinzufügen von v-show oder v-if. Es kann mit Slot kombiniert werden, um Popup-Fenster mit unterschiedlichen Anforderungen zu definieren
2. Die Ereignisverwaltung registriert ein globales Ereignis um das Popup-Fenster zu öffnen und zu übergeben Der anzuzeigende Text und die zugehörige Logiksteuerung können mit Versprechen kombiniert werden, um asynchrone Ergebnisse zu erzielen
Ich denke, es ist besser, ereignisgesteuerte Popup-Fenster wie bestätigen und zu verwenden prompt. Am besten verwenden Sie Promise-Callbacks.
Also habe ich eines geschrieben, weil meine Hände juckten. Unten ist der Code.
prompt.js
import Vue from 'vue' import promptComponent from './prompt.vue' // 引入弹窗的vue文件 const promptConstructor = Vue.extend(promptComponent); // 注册组件 let instance = new promptConstructor().$mount(''); // 获得组件的实例 document.body.appendChild(instance.$el); // 将组件的element插入到body中 const Alert = (text,okText)=>{ if(instance.show === true) { //防止多次触发 return; } // 为弹窗数据赋值 instance.show = true; instance.isAlert = true; instance.okText = okText||'确定'; instance.message = text; //返回一个promise对象,并为按钮添加事件监听 return new Promise(function(resolve,reject) { instance.$refs.okBtn.addEventListener('click',function() { instance.show = false; resolve(true); }) }) }; const Confirm = (text,okText,cancelText)=>{ if(instance.show === true) { return; } instance.show = true; instance.okText = okText||'确定'; instance.cancelText = cancelText||'取消'; instance.message = text; return new Promise(function(resolve,reject) { instance.$refs.cancelBtn.addEventListener('click',function() { instance.show = false; resolve(false); }); instance.$refs.okBtn.addEventListener('click',function() { instance.show = false; resolve(true); }) }) }; const Prompt = (text,okText,inputType, defaultValue)=>{ if(instance.show === true) { return; } instance.show = true; instance.isPrompt = true; instance.okText = okText||'确定'; instance.message = text; instance.inputType = inputType || 'text'; instance.inputValue = defaultValue || ''; return new Promise(function(resolve,reject) { instance.$refs.okBtn.addEventListener('click',function() { instance.show = false; resolve(instance.inputValue); }) }) }; export {Alert,Confirm,Prompt}
prompt.vue
<style lang="less" scoped> .confirm-enter-active { transition: all .2s; } .confirm-leave-active { transition: opacity .2s; } .confirm-leave-to { opacity: 0; } .confirm-enter { opacity: 0; } .confirm { position: relative; font-family: PingFangSC-Regular; font-size: 17px; -webkit-user-select: none; user-select: none; // 遮罩层样式 .masker { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, .4); -webkit-transition: opacity .1s linear; transition: opacity .1s linear; z-index: 100; } // 入库数据错误样式 .box { position: absolute; top: 50%; left: 50%; width: 72%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); text-align: center; border-radius: 12px; background-color: #fff; .message { height: 97px; line-height: 24px; font-family: PingFangSC-Regular; font-size: 17px; vertical-align: middle; color: #999; letter-spacing: -0.41px; p { margin: 20px auto 0 auto; vertical-align: middle; } &::after { content: ''; height: 100%; } } .prompt { margin: 20px 0; width: 100%; p { margin: 5px auto; font-size: 17px; line-height: 24px; } input { margin: 5px auto; border: 1px solid #333; border-radius: 6px; width: 100px; height: 30px; font-size: 14px; line-height: 20px; text-align: center; } } .button-group { a { width: calc(50% - 0.5px); text-align: center; font-size: 17px; line-height: 43px; color: blue; } .max-width { width: 100% !important;; } } } } </style> <template> <transition name="confirm"> <p class="confirm" v-show="show"> <p class="masker" @touchmove.prevent> <p class="box"> <p class="message" v-if="!isPrompt"> <p>{{message}}</p> </p> <p class="prompt" v-if="isPrompt"> <p>{{message}}</p> <input type="text" v-model="inputValue" v-if="inputType === 'text'" ref="inputEl"> <input type="tel" v-model.number="inputValue" @keydown="enterCheck" v-if="inputType === 'tel'" ref="inputEl"> </p> <p class="button-group clearfix bd-top"> <a class="bd-right fl" ref="cancelBtn" v-show="!isAlert && !isPrompt">{{cancelText}}</a> <a class="fr" ref="okBtn" :class="{'max-width': isAlert || isPrompt}">{{okText}}</a> </p> </p> </p> </p> </transition> </template> <script type="text/ecmascript-6"> import {mapState} from 'vuex' export default{ data() { return { show: false, message: '请输入提示语', okText: '确定', cancelText: '取消', isAlert: false, isPrompt: false, inputValue: '', inputType: '' } }, methods: { // 金额输入框校验 enterCheck(event) { // 只允许输入数字,删除键,11位数字 if (event.keyCode === 46 || event.keyCode === 8) { return; } if (event.keyCode < 47 || event.keyCode > 58 || event.keyCode === 190) { event.returnValue = false; } }, }, watch: { show(){ if (this.show) { this.$nextTick(() => { console.log(this.$refs.inputEl); console.log(this.inputType); this.$refs.inputEl.focus(); }); } } } } </script>
main.js
import {Alert,Prompt,Confirm} from '../lib/components/prompt/prompt.js' Vue.prototype.Alert = function(text,okText) { return Alert(text,okText) }; Vue.prototype.Confirm = function(text,okText,cancelText) { return Confirm(text,okText,cancelText) }; Vue.prototype.Prompt = function(text,okText,inputType, defaultValue) { return Prompt(text,okText,inputType, defaultValue) }; component.vue: inputName() { this.Prompt('请输入名称','确认','text').then(res =>{ // do something use res }); },
Verwandte Empfehlungen:
So erstellen Sie einen Popup-Effekt mit jQuery
So lösen Sie das Problem, dass das Popup-Fenster in H5 nicht mit Webview angezeigt werden kann
So verwenden Sie js, um Parameter an das Popup-Fenster zu übergeben php
Das obige ist der detaillierte Inhalt vonBeispiel für die Implementierung eines ereignisgesteuerten VUE2-Popup-Fensters. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Wie implementiert man die doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen? Mit dem Aufkommen der sozialen Medien ist WeChat zu einem unverzichtbaren Kommunikationsmittel im täglichen Leben der Menschen geworden. Viele Menschen können jedoch auf ein Problem stoßen: Sie können sich gleichzeitig auf demselben Mobiltelefon bei mehreren WeChat-Konten anmelden. Für Huawei-Mobiltelefonbenutzer ist es nicht schwierig, eine doppelte WeChat-Anmeldung zu erreichen. In diesem Artikel wird erläutert, wie eine doppelte WeChat-Anmeldung auf Huawei-Mobiltelefonen erreicht wird. Erstens bietet das EMUI-System, das mit Huawei-Mobiltelefonen geliefert wird, eine sehr praktische Funktion – das doppelte Öffnen von Anwendungen. Durch die doppelte Öffnungsfunktion der Anwendung können Benutzer gleichzeitig

Die Programmiersprache PHP ist ein leistungsstarkes Werkzeug für die Webentwicklung, das eine Vielzahl unterschiedlicher Programmierlogiken und Algorithmen unterstützen kann. Unter diesen ist die Implementierung der Fibonacci-Folge ein häufiges und klassisches Programmierproblem. In diesem Artikel stellen wir vor, wie Sie die Fibonacci-Folge mit der Programmiersprache PHP implementieren, und fügen spezifische Codebeispiele bei. Die Fibonacci-Folge ist eine mathematische Folge, die wie folgt definiert ist: Das erste und das zweite Element der Folge sind 1, und ab dem dritten Element ist der Wert jedes Elements gleich der Summe der beiden vorherigen Elemente. Die ersten paar Elemente der Sequenz

So implementieren Sie die WeChat-Klonfunktion auf Huawei-Mobiltelefonen Mit der Popularität sozialer Software und der zunehmenden Bedeutung von Datenschutz und Sicherheit rückt die WeChat-Klonfunktion allmählich in den Mittelpunkt der Aufmerksamkeit der Menschen. Die WeChat-Klonfunktion kann Benutzern helfen, sich gleichzeitig bei mehreren WeChat-Konten auf demselben Mobiltelefon anzumelden, was die Verwaltung und Nutzung erleichtert. Es ist nicht schwierig, die WeChat-Klonfunktion auf Huawei-Mobiltelefonen zu implementieren. Sie müssen lediglich die folgenden Schritte ausführen. Schritt 1: Stellen Sie sicher, dass die Version Ihres Mobiltelefonsystems und die WeChat-Version den Anforderungen entsprechen. Stellen Sie zunächst sicher, dass die Version Ihres Huawei-Mobiltelefonsystems sowie die WeChat-App auf die neueste Version aktualisiert wurden.

Einrückungsspezifikationen und Beispiele der Go-Sprache Die von Google entwickelte Programmiersprache ist für ihre prägnante und klare Syntax bekannt, bei der Einrückungsspezifikationen eine entscheidende Rolle für die Lesbarkeit und Schönheit des Codes spielen. In diesem Artikel werden die Einrückungsspezifikationen der Go-Sprache vorgestellt und anhand spezifischer Codebeispiele ausführlich erläutert. Einrückungsspezifikationen In der Go-Sprache werden Tabulatoren anstelle von Leerzeichen zum Einrücken verwendet. Jede Einrückungsebene besteht aus einem Tabulator, der normalerweise auf eine Breite von 4 Leerzeichen eingestellt ist. Solche Spezifikationen vereinheitlichen den Codierungsstil und ermöglichen es Teams, beim Kompilieren zusammenzuarbeiten

Die DECODE-Funktion in Oracle ist ein bedingter Ausdruck, der häufig verwendet wird, um unterschiedliche Ergebnisse basierend auf unterschiedlichen Bedingungen in Abfrageanweisungen zurückzugeben. In diesem Artikel werden die Syntax, Verwendung und der Beispielcode der DECODE-Funktion im Detail vorgestellt. 1. Syntax der DECODE-Funktion DECODE(expr,search1,result1[,search2,result2,...,default]) expr: der zu vergleichende Ausdruck oder das zu vergleichende Feld. Suche1,

Im heutigen Bereich der Softwareentwicklung wird Golang (Go-Sprache) als effiziente, prägnante und hochgradig parallele Programmiersprache von Entwicklern zunehmend bevorzugt. Seine umfangreiche Standardbibliothek und die effizienten Parallelitätsfunktionen machen es zu einer hochkarätigen Wahl im Bereich der Spieleentwicklung. In diesem Artikel wird untersucht, wie man Golang für die Spieleentwicklung verwendet, und seine leistungsstarken Möglichkeiten anhand spezifischer Codebeispiele demonstriert. 1. Golangs Vorteile bei der Spieleentwicklung: Als statisch typisierte Sprache wird Golang beim Aufbau großer Spielsysteme verwendet.

Implementierungsleitfaden für PHP-Spielanforderungen Mit der Popularität und Entwicklung des Internets erfreut sich der Markt für Webspiele immer größerer Beliebtheit. Viele Entwickler hoffen, die PHP-Sprache zur Entwicklung ihrer eigenen Webspiele nutzen zu können, und die Umsetzung der Spielanforderungen ist ein wichtiger Schritt. In diesem Artikel wird erläutert, wie Sie mithilfe der PHP-Sprache allgemeine Spielanforderungen implementieren und spezifische Codebeispiele bereitstellen. 1. Spielfiguren erstellen In Webspielen sind Spielfiguren ein sehr wichtiges Element. Wir müssen die Attribute des Spielcharakters wie Name, Level, Erfahrungswert usw. definieren und Methoden für deren Bedienung bereitstellen

Die Implementierung exakter Divisionsoperationen in Golang ist ein häufiger Bedarf, insbesondere in Szenarien mit Finanzberechnungen oder anderen Szenarien, die hochpräzise Berechnungen erfordern. Der in Golang integrierte Divisionsoperator „/“ wird für Gleitkommazahlen berechnet, und manchmal besteht das Problem eines Präzisionsverlusts. Um dieses Problem zu lösen, können wir Bibliotheken von Drittanbietern oder benutzerdefinierte Funktionen verwenden, um exakte Divisionsoperationen zu implementieren. Ein gängiger Ansatz ist die Verwendung des Rat-Typs aus dem Paket math/big, der eine Darstellung von Brüchen bereitstellt und zur Implementierung exakter Divisionsoperationen verwendet werden kann.
