微信小程序实现自定义modal弹窗封装的方法

为了实现微信小程序中自定义的弹窗效果,可以使用组件化的方法进行封装。

第一步:创建组件文件

在小程序项目中创建一个组件文件夹,例如 components,并在其中创建一个名为 modal 的文件夹。在 modal 文件夹中创建以下文件:

  • modal.wxml:用于定义弹窗的结构,例如标题、内容、按钮等。
  • modal.wxss:用于定义弹窗的样式,例如背景色、字体大小、边框等。
  • modal.js:用于控制弹窗的行为,例如显示、隐藏、按钮点击等。
  • index.js:用于将组件注册到全局。

第二步:编写弹窗结构

modal.wxml 中定义弹窗的结构,例如:

<view class="modal-mask">
  <view class="modal-wrapper">
    <view class="modal-header">
      <text>{{title}}</text>
    </view>
    <view class="modal-body">
      <slot></slot>
    </view>
    <view class="modal-footer">
      <button class="modal-btn-confirm" bindtap="confirm">
        {{confirmText}}
      </button>
      <button class="modal-btn-cancel" bindtap="cancel">
        {{cancelText}}
      </button>
    </view>
  </view>
</view>

在弹窗中使用了一个插槽(slot),可以用于显示弹窗的内容。

第三步:编写弹窗样式

modal.wxss 中定义弹窗的样式,例如:

.modal-mask {
  position: fixed;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  z-index: 9999;
}

.modal-wrapper {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 80%;
  max-width: 400rpx;
  background: #fff;
  border-radius: 8rpx;
  overflow: hidden;
}

.modal-header {
  padding: 20rpx;
  text-align: center;
  font-size: 28rpx;
  font-weight: bold;
}

.modal-body {
  padding: 20rpx;
  font-size: 32rpx;
}

.modal-footer {
  display: flex;
  justify-content: center;
}

.modal-btn-confirm {
  margin-right: 20rpx;
  padding: 10rpx 30rpx;
  background: #1aad19;
  color: #fff;
  font-size: 28rpx;
  border-radius: 8rpx;
}

.modal-btn-cancel {
  padding: 10rpx 30rpx;
  background: #eee;
  color: #333;
  font-size: 28rpx;
  border-radius: 8rpx;
}

根据需要可以调整弹窗的样式。

第四步:编写弹窗逻辑

modal.js 中定义弹窗的逻辑,例如:

Component({
  properties: {
    title: {
      type: String,
      value: '提示'
    },
    confirmText: {
      type: String,
      value: '确定'
    },
    cancelText: {
      type: String,
      value: '取消'
    },
    visible: {
      type: Boolean,
      value: false,
      observer: function(newVal) {
        if (newVal) {
          this.setData({
            animation: 'modal-show'
          })
        } else {
          this.setData({
            animation: 'modal-hide'
          })
        }
      }
    }
  },
  methods: {
    confirm: function() {
      this.setData({
        visible: false
      })
      this.triggerEvent('confirm')
    },
    cancel: function() {
      this.setData({
        visible: false
      })
      this.triggerEvent('cancel')
    }
  }
})

在组件的 properties 中定义了弹窗的配置项,包括标题、确认按钮文本、取消按钮文本、是否可见等。在 observer 函数中监听 visible 属性的变化,根据变化控制弹窗的显示和隐藏。

在 methods 中定义了确认和取消按钮的点击事件,触发了对应的自定义事件(confirm 和 cancel)。

第五步:注册组件

index.js 中注册组件,例如:

import Modal from './modal'

Component({
  options: {
    multipleSlots: true
  },
  properties: {
    title: {
      type: String,
      value: '提示'
    },
    confirmText: {
      type: String,
      value: '确定'
    },
    cancelText: {
      type: String,
      value: '取消'
    }
  },
  methods: {
    showModal: function() {
      this.setData({
        visible: true
      })
    }
  },
  // 将组件注册到全局
  attached: function() {
    wx._modal = this.selectComponent('.modal')
  }
})

wx.Modal = Modal

在组件的 attached 函数中将组件注册到全局,这样就方便在其他页面中使用自定义的弹窗组件。同时在 methods 中定义 showModal 函数,用于显示弹窗。

示例

以下是使用自定义弹窗组件的示例:

wx.Modal({
  title: '提示',
  content: '这是一个弹窗',
  success: function(res) {
    if (res.confirm) {
      console.log('用户点击确定')
    } else if (res.cancel) {
      console.log('用户点击取消')
    }
  }
})

上述示例中,调用 wx.Modal 函数显示弹窗,设置了弹窗的标题和内容,并在确认和取消按钮点击后分别触发了回调函数。

另一个示例是:

<modal visible="{{visible}}" title="提示" confirm-text="确定" cancel-text="取消" bindconfirm="onConfirm" bindcancel="onCancel">
  是否删除这个记录?
</modal>

在页面中引入自定义的弹窗组件,在 modal 标签中设置弹窗的配置项,包括标题、按钮文本、内容以及确认和取消按钮点击后触发的事件。设置了 visible 属性控制弹窗的显示和隐藏。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:微信小程序实现自定义modal弹窗封装的方法 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • 关于配置:pgadmin4:无法联系postgresql应用程序服务器

    以下是关于配置pgAdmin4时遇到无法联系PostgreSQL应用程序服务器的完整攻略,包含两个示例。 关于配置pgAdmin时遇到无法联系PostgreSQL应用服务器的攻略 在配置Admin4时,有时候会遇到无法Post应用程序的问题。以下是两个示例: 1. 检查PostgreSQL服务器是否正在行 首先,我们需要检查PostgreSQL服务器是否正在…

    other 2023年5月9日
    00
  • Android Studio开发环境搭建教程详解

    Android Studio开发环境搭建教程详解 本教程将详细介绍如何搭建Android Studio开发环境。Android Studio是一款由Google开发的集成开发环境(IDE),用于开发Android应用程序。以下是搭建Android Studio开发环境的步骤: 步骤一:下载Android Studio 首先,您需要下载Android Stud…

    other 2023年7月27日
    00
  • 一份ASP内存的释放的实验报告

    一份ASP内存的释放的实验报告攻略 简介 本实验旨在研究ASP(Active Server Pages)内存的释放机制,并探索如何有效地释放ASP内存以提高系统性能。本攻略将详细介绍实验的步骤和示例说明。 实验步骤 步骤一:创建ASP页面 创建一个简单的ASP页面,例如test.asp。 在test.asp中添加一些占用内存的代码,例如创建大型数组或加载大型…

    other 2023年8月2日
    00
  • Android仿美团外卖菜单界面

    Android仿美团外卖菜单界面攻略 简介 本攻略将详细讲解如何实现一个仿美团外卖菜单界面的Android应用。该应用将包含以下功能:- 展示菜单列表- 添加菜品到购物车- 查看购物车内容- 结算购物车 步骤 步骤一:创建项目 首先,创建一个新的Android项目。可以使用Android Studio来完成这一步骤。 步骤二:设计界面 设计菜单界面需要使用R…

    other 2023年8月20日
    00
  • php面试中关于面向对象的相关问题

    PHP面试中关于面向对象的相关问题攻略 面向对象编程(Object-Oriented Programming,简称OOP)是PHP开发中的重要概念。在PHP面试中,面向对象的相关问题经常被提及。下面是一些常见的面向对象问题以及它们的详细解释和示例。 1. 什么是面向对象编程? 面向对象编程是一种编程范式,它将数据和操作数据的方法封装在一起,形成对象。对象是类…

    other 2023年8月20日
    00
  • vue3中echarts的tooltip组件不显示问题及解决

    下面就是关于“vue3中echarts的tooltip组件不显示问题及解决”的详细攻略。 问题描述 在Vue3项目中,使用ECharts作为图表库进行数据可视化时,有时候会出现Tooltip组件无法显示的问题。 解决步骤 步骤一:检查ECharts版本 首先,我们要检查一下当前项目中使用的ECharts版本是否支持Vue3。如果版本过低或过高,会导致组件无法…

    other 2023年6月27日
    00
  • linux系列之常用运维命令整理笔录(小结)

    Linux系列之常用运维命令整理笔录(小结) 前言 在Linux系统的运维工作中,经常需要使用一些基础的命令来进行操作和维护,这些命令可以说是我们的“基本功”。本篇文章将总结常用的运维命令,帮助大家更好地掌握这些工具,提高运维效率。 常用命令 下面列出了一些常用的命令,分别是: 文件操作命令 系统监控命令 进程管理命令 网络管理命令 磁盘管理命令 文件操作命…

    other 2023年6月26日
    00
  • 超详细的Android开发调试工具ADB命令及安装介绍

    超详细的Android开发调试工具ADB命令及安装介绍 什么是ADB Android Debug Bridge(简称ADB)是一个调试工具,它可以通过USB或TCP/IP连接Android设备,让开发者可以在开发及调试移动应用时与设备进行通信,进行文件传输、安装应用、调试应用等操作。 ADB命令的安装 ADB是一个Android SDK的组件,因此,要安装A…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部