uniapp开发小程序实现全局弹窗,可在js中调用

一、效果图

在这里插入图片描述

二、背景

由于微信小程序API showModal 无法自定义样式,我们小程序的整体风格偏黑,所以不得不修改样式,但是我们的请求都进行了拦截,在拦截处弹出错误提示,在js中进行了showModal 的调用

三、实现步骤

1、安装插件vue-inset-loader

npm i vue-inset-loader

2、创建vue.config.js 文件

const path = require('path')
module.exports = {
   
   
	configureWebpack: {
   
   
		module: {
   
   
			rules: [{
   
   
				test: /\.vue$/,
				use: {
   
   
					loader: path.resolve(__dirname, "./node_modules/vue-inset-loader")
				},
			}]
		},
	}
}

3、创建全局组件

<template>
	<view class="modal" v-if="customShowModal.visible">
		<view class="modal-content">
			<view class="modal-header">
				<text>{
   
   {
   
    customShowModal.title }}</text>
			</view>
			<view class="modal-body">
				<text>{
   
   {
   
    customShowModal.content }}</text>
			</view>
			<view class="modal-footer">
				<view class="button_view cancel-btn " v-if="customShowModal.showCancel" @click="cancel">{
   
   {
   
    customShowModal.cancelText }}</view>
				<view class="button_view confirm-btn"
### 实现函数式弹窗通知 在 UniApp实现微信小程序的函数式弹窗通知可以通过定义全局方法来调用弹窗组件。这种方式不仅提高了代码的可维护性和复用率,还使得逻辑更加清晰。 为了创建一个可以被任意页面调用的通知弹窗,在 `common` 文件夹下新建名为 `popup.js` 的文件用于封装弹窗逻辑[^1]: ```javascript // common/popup.js import Vue from 'vue'; let PopupConstructor; function getPopup() { if (!PopupConstructor) { const Ctor = Vue.extend(require('@/components/MyPopup.vue').default); PopupConstructor = new Ctor().$mount(); document.body.appendChild(PopupConstructor.$el); // 将实例挂载到body节点上 } return PopupConstructor; } export function showPopup(options) { let popupInstance = getPopup(); Object.assign(popupInstance, options); popupInstance.show = true; // 显示弹框 } ``` 接着,在项目的根目录下的 `main.js` 中引入并注册此方法作为Vue原型链上的属性以便于全局访问[^2]: ```javascript // main.js import {showPopup} from './common/popup'; Vue.prototype.$popup = showPopup; ``` 最后一步是在组件库中设计具体的弹窗样式与行为逻辑,比如命名为 `MyPopup.vue`: ```html <!-- components/MyPopup.vue --> <template> <view v-if="show"> <!-- 自定义内容区域 --> {{ message }} <!-- 关闭按钮 --> <button @click="close">关闭</button> </view> </template> <script> export default { data () { return { show: false, message: '' }; }, methods: { close(){ this.show=false; } } }; </script> ``` 通过上述设置之后就可以在任何地方轻松地展示自定义的消息提示框了。只需简单调用 `$popup({message:'这里是你要显示的信息'})` 即可在当前视图层之上浮现出指定样式的对话框[^3]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值