vue全局掛載實(shí)現(xiàn)APP全局彈窗的示例代碼
需求背景
app端對(duì)接網(wǎng)頁(yè)端的客服系統(tǒng),在用戶實(shí)現(xiàn)網(wǎng)頁(yè)客戶系統(tǒng)發(fā)起詢問時(shí),app不論在哪個(gè)頁(yè)面都需要彈窗提示
需求分析
這個(gè)需求分為兩步,一個(gè)是負(fù)責(zé)雙向?qū)崟r(shí)通信,一個(gè)是全局顯示。雙向?qū)崟r(shí)通信我們可以利用socket來(lái)實(shí)現(xiàn),具體內(nèi)容不展開(后續(xù)看情況再出一篇),本文主要講全局顯示。
代碼展示
首先是寫個(gè)彈窗組件,這里給出個(gè)demo。如下
<template> <view class="transferPopup-wrap" style="transform: translateY(-200px)" > <view class="transferPopup-topContent"> <text class="transferPopup-status">組內(nèi)轉(zhuǎn)接</text> <text class="transferPopup-from" >渠道組陳志成 將匿名客戶03(廈門)轉(zhuǎn)接給你</text > </view> <view class="transferPopup-reason"> 轉(zhuǎn)接原因:該客戶想購(gòu)買服務(wù),請(qǐng)及時(shí)接待! </view> </view> </template> export default { data () { return { timer: '' } }, methods: { openPopup () { setTimeout(() => { //transferPopup-wrap_in class的作用是translateY置為0 document.querySelector('.transferPopup-wrap').classList.add('transferPopup-wrap_in') }, 0) //設(shè)置定時(shí)任務(wù),三秒無(wú)操作自動(dòng)消失 this.timer = setTimeout(() => { this.closePopup() }, 3000) }, closePopup () { //清除定時(shí)器 clearTimeout(this.timer) //實(shí)現(xiàn)從下往上消失,隱藏后移除該元素 document.querySelector('.transferPopup-wrap').classList.remove('transferPopup-wrap_in') setTimeout(() => { document.body.removeChild(document.querySelector('.transferPopup-wrap')) }, 550) } } }
注意有個(gè)transform: translateY(-200px)
和transferPopup-wrap_in
class,這是為了模擬彈窗出現(xiàn)時(shí)從上往下滑動(dòng)的動(dòng)畫(參考微信qq)
接下來(lái)只要把這個(gè)組件掛載到vue原型,就可以在任何地方使用且無(wú)需引入,主要利用vue.extend
首先,先在該組件同級(jí)目錄建立index.js
,內(nèi)容如下
import vue from 'vue' // 這里就是我們剛剛創(chuàng)建的那個(gè)靜態(tài)組件 import toastComponent from './index.vue' // 返回一個(gè) 擴(kuò)展實(shí)例構(gòu)造器 const ToastConstructor = vue.extend(toastComponent) toastComponent.install = function () { const toastDom = new ToastConstructor({}) //掛載到添加的div上 toastDom.$mount(document.createElement('div')) //div添加到body里 document.body.appendChild(toastDom.$el) return toastDom } export default toastComponent
然后在main.js引入,即可實(shí)現(xiàn)
import Vue from 'vue' import transferPopup from "@/components/transferPopup/index.js"; // 全局彈窗轉(zhuǎn)接提示組件 Vue.prototype.$transferPopup = transferPopup.install;
然后在其他文件就可以通過this.$transferPopup().openPopup('組內(nèi)轉(zhuǎn)接')
調(diào)用組件的方法
到此這篇關(guān)于vue全局掛載實(shí)現(xiàn)APP全局彈窗的示例代碼的文章就介紹到這了,更多相關(guān)vue APP全局彈窗內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3開啟攝像頭并進(jìn)行拍照的實(shí)現(xiàn)示例
本文主要介紹了vue3開啟攝像頭并進(jìn)行拍照的實(shí)現(xiàn)示例,主要是使用navigator.mediaDevices.getUserMedia這個(gè)API來(lái)實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01Vue Element-UI中el-table實(shí)現(xiàn)單選的示例代碼
在element-ui中是為我們準(zhǔn)備好了可直接使用的單選與多選屬性的,本文主要介紹了Vue Element-UI中el-table實(shí)現(xiàn)單選的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12詳解vue+nodejs獲取多個(gè)表數(shù)據(jù)的方法
這篇文章主要為大家介紹了vue+nodejs獲取多個(gè)表數(shù)據(jù)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2021-12-12vue實(shí)現(xiàn)省市區(qū)的級(jí)聯(lián)選擇
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)省市區(qū)的級(jí)聯(lián)選擇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10vue與原生app的對(duì)接交互的方法(混合開發(fā))
vue開發(fā)h5項(xiàng)目特別是移動(dòng)端的項(xiàng)目,很多都是打包后掛載在原生APP上的,這篇文章主要介紹了vue與原生app的對(duì)接交互的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-11-11Vue3+TS實(shí)現(xiàn)數(shù)字滾動(dòng)效果CountTo組件
最近開發(fā)有個(gè)需求需要酷炫的文字滾動(dòng)效果,發(fā)現(xiàn)vue2版本的CountTo組件不適用與Vue3,沒有輪子咋辦,那咱造一個(gè)唄,感興趣的小伙伴可以跟隨小編一起了解一下2022-11-11