小程序开发之模态框组件封装

小程序中常用的模态框组件包括原生的<modal>和现成的第三方插件,但是这些组件不够灵活且有些过于复杂。下面是一些关于模态框组件封装的完整攻略:

1. 创建弹窗组件

1.1 创建模态框文件夹及文件

在小程序开发工具中,我们可以通过右键菜单创建文件夹和文件。首先,我们需要在项目中新建一个文件夹components,然后在components文件夹中新建一个文件夹modal,并在modal文件夹中新建两个文件modal.wxmlmodal.wxss

1.2 模态框组件代码

modal.wxml中编写以下代码:

<view class="modal-mask" catchtap="hideModal"></view>
<view class="modal">
  <view class="modal-header">{{title}}</view>
  <view class="modal-body">{{content}}</view>
  <view class="modal-footer">
    <button class="modal-close" catchtap="hideModal">取消</button>
    <button class="modal-confirm" catchtap="confirm">确定</button>
  </view>
</view>

上面代码定义了一个模态框组件,包括遮罩层和弹窗部分。弹窗部分包含标题、内容以及底部按钮组。其中,titlecontent是组件的属性,通过外部传入,并在组件内部绑定显示的文本。底部按钮组包括取消和确认两个按钮,通过绑定catchtap事件触发外部的事件方法。

modal.wxss中编写以下代码:

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

.modal {
  position: fixed;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 80%;
  max-width: 480rpx;
  border-radius: 6rpx;
  background-color: #fff;
  z-index: 100;
  overflow: hidden;
}

.modal-header {
  padding: 16rpx;
  font-size: 28rpx;
  font-weight: bold;
  text-align: center;
  color: #666;
}

.modal-body {
  padding: 24rpx;
  font-size: 32rpx;
  line-height: 1.6;
  color: #666;
}

.modal-footer {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  padding: 16rpx;
}

.modal-close,
.modal-confirm {
  width: 48%;
  height: 88rpx;
  border: none;
  border-radius: 6rpx;
  font-size: 28rpx;
  color: #fff;
}

.modal-close {
  background-color: #999;
  opacity: 0.8;
}

.modal-confirm {
  background-color: #00a5e9;
  opacity: 0.8;
}

上面代码设置了模态框组件的样式,包括遮罩层、弹窗和底部按钮的样式。

1.3 模态框组件js代码

modal.js中编写以下代码:

Component({
  /**
   * 组件的属性列表
   */
  properties: {
    title: {
      type: String,
      value: '提示'
    },
    content: {
      type: String,
      value: ''
    },
    show: {
      type: Boolean,
      value: false
    }
  },

  /**
   * 组件的初始数据
   */
  data: {},

  /**
   * 组件的方法列表
   */
  methods: {
    hideModal: function() {
      this.setData({
        show: false
      })
    },

    confirm: function() {
      this.triggerEvent('confirm')
      this.hideModal()
    }
  }
})

上面代码定义了模态框组件的属性和方法,包括设置标题、内容和显示状态的属性以及隐藏组件和确认按钮的事件方法。其中,triggerEvent用于触发自定义事件,可以在外部使用bind:confirm绑定事件。

2. 使用弹窗组件

2.1 在页面中使用组件

在需要使用弹窗组件的页面中,需要先引入组件:

<import src="../../components/modal/modal.wxml" />
<template is="modal" data="{{...modal}}" />

上面代码引入了modal组件的wxml文件,并使用template标签来调用组件并传入相应的属性。

2.2 引入组件js代码

在需要使用弹窗组件的页面的js文件中,需要先引入组件:

import modal from '../../components/modal/modal'

然后在data中定义modal属性,并在需要显示弹窗的方法中设置modal属性的值:

data: {
  modal: {}
},

showModal: function() {
  this.setData({
    'modal.show': true,
    'modal.content': '确定要删除数据?'
  })
},

confirm: function() {
  console.log('确认删除')
}

上面代码使用了setData方法设置modal属性的值,包括设置显示弹窗和传入内容。在确认按钮的事件方法中,可以触发confirm事件。

示例1:

<import src="../../components/modal/modal.wxml" />
<template is="modal" data="{{...modal}}" />

<view class="page">
  <button class="btn" bindtap="showModal">显示弹窗</button>
</view>
import modal from '../../components/modal/modal'

Page({
  data: {
    modal: {}
  },

  onLoad: function() {
    this.setData({
      'modal.title': '提示',
      'modal.confirmText': '确认删除'
    })
  },

  showModal: function() {
    this.setData({
      'modal.show': true,
      'modal.content': '确定要删除数据?'
    })
  },

  confirm: function() {
    console.log('确认删除')
  }
})

示例2:

<import src="../../components/modal/modal.wxml" />
<template is="modal" data="{{...modal}}" />

<view class="page">
  <button class="btn" bindtap="showModal">显示弹窗</button>
</view>
import modal from '../../components/modal/modal'

Page({
  data: {
    modal: {}
  },

  onLoad: function() {
    this.setData({
      'modal.title': '提示',
      'modal.confirmText': '确认'
    })
  },

  showModal: function() {
    this.setData({
      'modal.show': true,
      'modal.content': '确定要提交数据?'
    })
  },

  confirm: function() {
    console.log('确认提交')
  }
})

上面代码中的示例1示例2都是在页面中引入了modal组件,并在方法中设置了modal属性的值,可以根据实际需求来设置弹窗的标题和内容。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:小程序开发之模态框组件封装 - Python技术站

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

相关文章

  • Win10创意者更新15063.483更新补丁KB4025342下载地址 X86/X64

    Win10创意者更新15063.483更新补丁KB4025342下载地址 X86/X64攻略 简介 Win10创意者更新15063.483更新补丁KB4025342是为Windows 10创意者更新版本(版本号15063.483)发布的一个重要补丁。该补丁修复了一些安全漏洞和系统稳定性问题,建议用户及时安装以保证系统的安全和稳定性。 下载地址 你可以从以下链…

    other 2023年8月3日
    00
  • babel插件去除console示例详解

    Babel插件去除console示例详解攻略 在JavaScript开发中,我们经常使用console对象来进行调试和输出信息。然而,在生产环境中保留这些console语句可能会导致性能下降或者泄露敏感信息。为了解决这个问题,我们可以使用Babel插件来去除代码中的console语句。本攻略将详细介绍如何使用Babel插件去除console语句,并提供两个示…

    other 2023年8月5日
    00
  • sql server——分组查询(方法和思想)

    以下是“SQL Server——分组查询(方法和思想)”的完整攻略,包括分组查询的概念、方法和示例说明。 分组查询的概念 分组查询是一种SQL查询语句,它将数据按照指定的列进行分组,并对每个分组进行聚合计算。分组查询通常用于统计和汇总数据,例如计算每个部门的销售总额、平均工资等。 分组查询的方法 以下是分组查询的方法: 使用GROUP BY子句:GROUP …

    other 2023年5月6日
    00
  • 华硕笔记本预装win8改win7系统完美解决方案(全程图解)

    下面我将详细讲解“华硕笔记本预装win8改win7系统完美解决方案(全程图解)”的完整攻略。 1. 准备工作 在开始安装之前,必须做好以下准备工作: 1.1. 下载Windows 7系统镜像文件。可以从官网或其他可靠的下载站点上下载。 1.2. 准备U盘或光盘。将Windows 7系统镜像文件刻录到U盘或光盘中。 1.3. 备份重要数据。在安装操作系统之前,…

    other 2023年6月26日
    00
  • python实现合并两个排序的链表

    下面是“python实现合并两个排序的链表”的完整攻略: 1. 题目描述 给定两个排好序的链表,将这两个链表合并成一个新的链表并返回。 例如,输入链表1为 1->2->4,链表2为 1->3->4,则合并后的新链表为 1->1->2->3->4->4。 2. 思路 定义新链表的头结点; 定义一个游标,指向…

    other 2023年6月28日
    00
  • .net获取本机公网IP地址示例

    获取本机公网IP地址示例攻略 简介 在.NET中获取本机公网IP地址可以通过使用第三方API或者直接访问网络接口来实现。下面将提供两个示例来说明如何获取本机公网IP地址。 示例一:使用第三方API 首先,我们需要选择一个可靠的第三方API来获取公网IP地址。一个常用的选择是ipify,它提供了一个简单的HTTP接口来获取公网IP地址。 在.NET中,我们可以…

    other 2023年7月31日
    00
  • 正则表达式限制 账号 密码 邮箱 身份证 手机号的相关代码

    接下来我将为你详细讲解如何使用正则表达式限制账号密码、邮箱、身份证和手机号的规则。 1. 什么是正则表达式 正则表达式是一种用来描述、匹配一类符合某些规则的字符串的方法。正则表达式通常用于搜索、编辑文本或数据。 在JavaScript中,我们可以通过RegExp对象来创建一个正则表达式对象。比如: const regex = new RegExp(patte…

    other 2023年6月27日
    00
  • Cmd模式下的入侵技术大全

    Cmd模式下的入侵技术大全 在 Cmd 模式下,有一些常用的入侵技术可以用来入侵目标系统,以下是一些介绍和实例。 1. 木马攻击 第一步,制作一个木马病毒程序,并将其上传到受害者电脑; 第二步,运行该病毒程序,等待受害者使用电脑时,通过漏洞获取管理员权限; 第三步,利用获得的管理员权限,对受害者电脑进行控制和信息窃取。 示例:制作一个木马病毒程序,装载到正常…

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