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

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

相关文章

  • mongodb的批量查询条件进行批量更新数据

    以下是“MongoDB的批量查询条件进行批量更新数据”的完整攻略: MongoDB的批量查询条件进行批量更新数据 在MongoDB中,您可以使用updateMany”函数批量更新符合条件的文档。以下是使用MongoDB进行批量更新的步骤: 准备查询条件。 在批更新之前,您需要准备一个查询条件。以下是一个示例: javascript var query = {…

    other 2023年5月7日
    00
  • 如何解决Word提示无法初始化visual basic环境的问题

    标准化word安装 首先,建议您安装正版的Microsoft Office软件,并且将其完整安装。按照官方的标准安装流程进行操作,不要进行任何过多的自定义操作。完整的安装过程应该会自动安装Visual Basic编程环境和所需的支持文件。 解决措施 如果您的Word已经安装好了,但是出现了无法初始化Visual Basic环境的问题,您可以按照以下步骤进行操…

    other 2023年6月20日
    00
  • JPA中JpaRepository接口的使用方式

    当使用JPA(Java Persistence API)时,我们可以通过JpaRepository接口来简化我们对数据库的操作。JpaRepository是Spring Data JPA提供的一个通用接口,它提供了一组基础的功能方法,如保存、删除、查询等,以及支持自定义查询。 以下是使用JpaRepository接口的详细攻略: 1. 定义实体类 首先,我们…

    other 2023年6月28日
    00
  • 获取URL文件名后缀

    获取URL文件名后缀(也称扩展名或文件类型)的方法有多种,下面我将为您提供常见的三种方式。 1. 使用URL的正则表达式获取文件后缀 我们可以通过使用正则表达式来提取URL中的文件后缀。具体来说,我们可以使用以下代码来获取URL末尾的字符串: import re url = ‘https://example.com/file.jpg’ match = re.…

    other 2023年6月27日
    00
  • Python学习之面向对象编程详解

    Python学习之面向对象编程详解攻略 1. 理解面向对象编程的概念 在初学Python时,我们经常听到“面向对象编程”,但很少有人真正理解它的含义。面向对象编程(OOP)是一种编程方法,它将程序中的数据和方法组合成对象,并通过对象之间的交互来实现程序的功能。 OOP具有下面三个主要特性: 封装:将对象的状态和行为封装在一个单独的单元内,从而隔离了内部细节并…

    other 2023年6月27日
    00
  • Android实现获取签名及公钥的方法

    Android实现获取签名及公钥的方法 在Android开发中,有时候我们需要获取应用的签名信息或公钥,以进行身份验证或其他安全相关的操作。下面是获取签名及公钥的方法的详细攻略: 1. 获取应用签名信息 要获取应用的签名信息,可以使用PackageManager类中的getPackageInfo方法。以下是获取应用签名信息的示例代码: try { Packa…

    other 2023年10月13日
    00
  • soa框架

    SOA框架:服务导向的架构流行趋势 在信息技术领域中,业务系统采用SOA(面向服务架构)框架构建愈发流行。SOA框架提供了在不同网络环境下弹性、安全、可扩展服务的集成途径。本文将深入探究SOA框架的含义、特点以及优势,同时也描述了它在现代应用开发中的广泛应用。 SOA框架的含义 面向服务的框架(SOA)在架构设计方面是一种横切关注点(cross-cuttin…

    其他 2023年3月29日
    00
  • linux安装vlc视频播放器

    VLC是一款跨平台的免费开源媒体播放器,支持播放各种音频和视频格式。在Linux系统中,我们可以通过命令行安装VLC。下面是Linux安装VLC视频播放器的完整攻略,包括两个示例说明。 示例一:使用apt-get命令安装VLC 在Debian和Ubuntu等基于Debian的Linux发行版中我们可以使用apt-get命令安装VLC。下面是一个示例,用于演示…

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