您好,登錄后才能下訂單哦!
本篇內容主要講解“vue全局掛載如何實現APP全局彈窗”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“vue全局掛載如何實現APP全局彈窗”吧!
app端對接網頁端的客服系統,在用戶實現網頁客戶系統發起詢問時,app不論在哪個頁面都需要彈窗提示
這個需求分為兩步,一個是負責雙向實時通信,一個是全局顯示。雙向實時通信我們可以利用socket來實現,具體內容不展開(后續看情況再出一篇),本文主要講全局顯示。
首先是寫個彈窗組件,這里給出個demo。如下
<template> <view class="transferPopup-wrap" > <view class="transferPopup-topContent"> <text class="transferPopup-status">組內轉接</text> <text class="transferPopup-from" >渠道組陳志成 將匿名客戶03(廈門)轉接給你</text > </view> <view class="transferPopup-reason"> 轉接原因:該客戶想購買服務,請及時接待! </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) //實現從下往上消失,隱藏后移除該元素 document.querySelector('.transferPopup-wrap').classList.remove('transferPopup-wrap_in') setTimeout(() => { document.body.removeChild(document.querySelector('.transferPopup-wrap')) }, 550) } } }
注意有個transform: translateY(-200px)
和transferPopup-wrap_in
class,這是為了模擬彈窗出現時從上往下滑動的動畫(參考微信qq)
接下來只要把這個組件掛載到vue原型,就可以在任何地方使用且無需引入,主要利用vue.extend
首先,先在該組件同級目錄建立index.js
,內容如下
import vue from 'vue' // 這里就是我們剛剛創建的那個靜態組件 import toastComponent from './index.vue' // 返回一個 擴展實例構造器 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引入,即可實現
import Vue from 'vue' import transferPopup from "@/components/transferPopup/index.js"; // 全局彈窗轉接提示組件 Vue.prototype.$transferPopup = transferPopup.install;
然后在其他文件就可以通過this.$transferPopup().openPopup('組內轉接')
調用組件的方法
到此,相信大家對“vue全局掛載如何實現APP全局彈窗”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。