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

小程序中常用的模态框组件包括原生的<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日

相关文章

  • latex数学公式基础

    LaTeX数学公式基础 LaTeX是一种专业的排版系统,广泛用于科学、技术和数学领域。它具有强大的数学公式排版,可以生成高质量的数学公式。本文将提供一个完整攻略,介绍TeX数学公式的基础知识和使用方法,并提供两个示例说明。 基础知识 数学模式 在LaTeX中,数学公式需要在数学模式中编写。数学模式两种:行内模和行间模式。行内模式用于在正文中插入简单的数学公式…

    other 2023年5月8日
    00
  • 基本修养:存储与文件系统讲解

    基本修养:存储与文件系统讲解 作为一个开发者,了解存储和文件系统是非常重要的。本文将为你介绍存储和文件系统的概念,并提供两条示例说明。 存储 存储是指计算机内部数据存储的设备。存储器被分为两类:主存储器和辅助存储器。 主存储器 主存储器也称为内存,是计算机临时存储数据的地方。在程序运行时,主存储器中存储的是运行时数据和指令。 辅助存储器 辅助存储器,也称为外…

    other 2023年6月27日
    00
  • Win11 22H2 Build 22621.674更新补丁KB5018427正式版发布(附完整更新日志)

    Win11 22H2 Build 22621.674 更新补丁 KB5018427 正式版发布攻略 简介 本攻略将详细讲解 Win11 22H2 Build 22621.674 更新补丁 KB5018427 的完整过程,并附上完整的更新日志。该补丁是正式版发布,旨在提供更好的性能和稳定性。 步骤 备份数据:在进行任何系统更新之前,建议备份重要的数据。这可以确…

    other 2023年8月3日
    00
  • mysql教程|菜鸟教程

    MySQL教程 MySQL是一个广泛使用的开源关系型数据库管理系统,被广泛应用于Web开发中。以下是MySQL的一些基本概念和操作方法。 MySQL的基本概念 数据库(Database) 数据库是指按照数据结构来组织、存储和管理数据的仓库,是应用系统中存储数据的物理容器。 表(Table) 表是数据库中存放数据的集合,是一种结构化的文件,用于存放数据。 字段…

    其他 2023年3月28日
    00
  • CentOS 6.7系统中给IP配置的两种教程

    CentOS 6.7系统中给IP配置的两种教程 在CentOS 6.7系统中,有两种方法可以配置IP地址。下面将详细介绍这两种方法,并提供两个示例说明。 方法一:使用命令行配置IP地址 打开终端,以root用户身份登录。 使用以下命令编辑网络配置文件: vi /etc/sysconfig/network-scripts/ifcfg-eth0 这里的eth0是…

    other 2023年7月31日
    00
  • 关于编译器构造:使用go反编译已编译的程序

    关于编译器构造:使用Go反编译已编译的程序 在编程中,反编译是将已编译的程序转换回其源代码的过程。在Go语言,可以使用反汇编器来反编译已编译的程序。以下是关于编译器构造:使用Go反编译已编译的程序完整攻略,包括常见问题和两个示例说明。 常见问题 1. 什么是反编译? 反编译将已编译的程序转换回其源代码的过程。这通常是为了理解程序的工作原理或修改程序而进行的。…

    other 2023年5月9日
    00
  • FTP上传工具哪个好用?2018年六款最常用的的FTP上传工具推荐

    FTP上传工具哪个好用?2018年六款最常用的的FTP上传工具推荐 什么是FTP上传工具? FTP上传工具是一种可以用来将文件上传至服务器的工具,其使用的方式为用户将需要上传的文件本地编辑保存好后使用FTP上传工具将其上传至服务器。 FTP上传工具有哪些? 2018年的FTP上传工具主要有以下六款: FileZilla WinSCP FireFTP Cybe…

    other 2023年6月27日
    00
  • iOS中UIRefreshControl的基本使用详解

    iOS中UIRefreshControl的基本使用详解 在iOS中,可以使用UIRefreshControl来添加下拉刷新功能,以便在用户下拉表格视图或集合视图时更新内容。在本篇攻略中,我们将深入介绍UIRefreshControl的基本使用方法。 添加UIRefreshControl 要在 iOS 应用程序中添加下拉刷新功能,需要使用UIRefreshCo…

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