vue全局掛載實現(xiàn)APP全局彈窗的示例代碼
需求背景
app端對接網(wǎng)頁端的客服系統(tǒng),在用戶實現(xiàn)網(wǎng)頁客戶系統(tǒng)發(fā)起詢問時,app不論在哪個頁面都需要彈窗提示

需求分析
這個需求分為兩步,一個是負責雙向?qū)崟r通信,一個是全局顯示。雙向?qū)崟r通信我們可以利用socket來實現(xiàn),具體內(nèi)容不展開(后續(xù)看情況再出一篇),本文主要講全局顯示。
代碼展示
首先是寫個彈窗組件,這里給出個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)接原因:該客戶想購買服務,請及時接待!
</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)
//設置定時任務,三秒無操作自動消失
this.timer = setTimeout(() => {
this.closePopup()
}, 3000)
},
closePopup () {
//清除定時器
clearTimeout(this.timer)
//實現(xiàn)從下往上消失,隱藏后移除該元素
document.querySelector('.transferPopup-wrap').classList.remove('transferPopup-wrap_in')
setTimeout(() => {
document.body.removeChild(document.querySelector('.transferPopup-wrap'))
}, 550)
}
}
} 注意有個transform: translateY(-200px)和transferPopup-wrap_inclass,這是為了模擬彈窗出現(xiàn)時從上往下滑動的動畫(參考微信qq)
接下來只要把這個組件掛載到vue原型,就可以在任何地方使用且無需引入,主要利用vue.extend首先,先在該組件同級目錄建立index.js,內(nèi)容如下
import vue from 'vue'
// 這里就是我們剛剛創(chuàng)建的那個靜態(tài)組件
import toastComponent from './index.vue'
// 返回一個 擴展實例構(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引入,即可實現(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全局掛載實現(xiàn)APP全局彈窗的示例代碼的文章就介紹到這了,更多相關(guān)vue APP全局彈窗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue Element-UI中el-table實現(xiàn)單選的示例代碼
在element-ui中是為我們準備好了可直接使用的單選與多選屬性的,本文主要介紹了Vue Element-UI中el-table實現(xiàn)單選的示例代碼,具有一定的參考價值,感興趣的可以了解一下2023-12-12
詳解vue+nodejs獲取多個表數(shù)據(jù)的方法
這篇文章主要為大家介紹了vue+nodejs獲取多個表數(shù)據(jù)的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-12-12
Vue3+TS實現(xiàn)數(shù)字滾動效果CountTo組件
最近開發(fā)有個需求需要酷炫的文字滾動效果,發(fā)現(xiàn)vue2版本的CountTo組件不適用與Vue3,沒有輪子咋辦,那咱造一個唄,感興趣的小伙伴可以跟隨小編一起了解一下2022-11-11

