微信小程序实现自定义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日

相关文章

  • 从UI Automation看Windows平台自动化测试原理

    UI Automation是Windows平台上的一种自动化测试技术,它可以模拟用户操作,对Windows应用程序进行自动化测试。在本文中,我们将详细介绍UI Automation的原理和使用方法,并提供两个示例说明。 UI Automation的原理 UI Automation是一种基于Microsoft Active Accessibility(MSAA…

    other 2023年5月5日
    00
  • htmlmailto标签详细使用方法

    HTML mailto标签详细使用方法 HTML中的mailto标签是一种用于创建电子邮件链接的标签。本文将介绍如何使用mailto标签,并提供两个示例说明。 步骤1:使用mailto标签 使用mailto标签,可以按照以下步操作: 在HTML文档中,使用<a>标签创建一个链接。 在<a>标中,使用href属性,并将其设置为mailt…

    other 2023年5月6日
    00
  • Android实现简洁的APP登录界面

    Android实现简洁的APP登录界面攻略 1. 设计登录界面布局 首先,我们需要设计一个简洁而吸引人的登录界面布局。可以使用XML布局文件来定义界面元素的位置和样式。以下是一个示例的登录界面布局: <LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android…

    other 2023年9月6日
    00
  • 仙剑奇侠传手游查看版本号方法 1.1.13版本在哪更新

    仙剑奇侠传手游查看版本号方法攻略 1.1.13版本更新位置 要查看仙剑奇侠传手游的版本号,你可以按照以下步骤进行操作: 打开仙剑奇侠传手游应用。 在主界面上,找到并点击游戏设置按钮。通常,这个按钮会以齿轮图标的形式显示。 在设置菜单中,寻找关于游戏或版本信息的选项。这个选项通常会显示游戏的当前版本号。 点击关于游戏或版本信息选项,即可查看游戏的版本号。 示例…

    other 2023年8月3日
    00
  • AngularJS控制器controller正确的通信的方法

    AngularJS控制器(controller)正确的通信方法攻略 在AngularJS中,控制器(controller)之间的正确通信对于构建复杂的应用程序至关重要。下面是一些可以帮助你实现正确通信的方法和示例说明。 1. 使用服务(service)进行通信 AngularJS中的服务(service)是用于在不同控制器之间共享数据和功能的理想方式。你可以…

    other 2023年8月19日
    00
  • Java中的字符串常量池详细介绍

    Java中的字符串常量池详细介绍 在Java中,字符串常量池是一种特殊的内存区域,用于存储字符串常量。字符串常量池具有以下特点: 字符串常量池是在堆内存中的一部分,用于存储字符串常量。 字符串常量池中的字符串对象是不可变的,一旦创建就不能被修改。 字符串常量池中的字符串对象是共享的,多个引用可以指向同一个字符串对象。 字符串常量池的目的是提高性能和节省内存,…

    other 2023年10月15日
    00
  • AngularJS 指令详细介绍

    AngularJS 指令详细介绍 1. 指令的概述 AngularJS 是一个使用指令来扩展 HTML 语法的 JavaScript 框架。指令是 AngularJS 的核心特性之一,它们允许我们通过自定义标签、属性或类名来创建可重用的组件。 2. 内置指令 AngularJS 提供了一些内置指令,用于实现常见的功能。 ng-app 用于定义 Angular…

    other 2023年6月28日
    00
  • WinRAR压缩软件如何创建配置文件 WinRAR创建WinRAR.ini文件教程

    一、WinRAR压缩软件创建配置文件 WinRAR是一款非常流行的压缩软件,它不仅可以对文件进行压缩和解压缩,还可以有许多高级选项,例如创建RAR文件、加密压缩文件等。为了方便用户使用,WinRAR提供了创建配置文件的功能,将你常用的选项保存在一个配置文件中,方便下次打开WinRAR时直接使用。 二、WinRAR创建WinRAR.ini文件教程 1.打开Wi…

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