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


Posted in Javascript onApril 23, 2020

本文实例为大家分享了小程序模态框组件的封装具体代码,供大家参考,具体内容如下

一、前言

对于模态框肯定大家都知道,诸如:Bootstartp、element-ui、layui等等都有自己的弹出层,并可以之定义内容,但是小程序的弹出层原生的太简单,那么我们如果自定义呢?

其实很简单,就是一个遮罩、一个view内容区就搞定了!接下来看一下我自己封装后的模态框效果:

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

感觉还可以哈!

二、模态框组件的使用

1.先在使用页面的json注册该组件

{
 "navigationBarTitleText": "XXXX",
 "usingComponents": {
 "print-popups": "/components/popups/popups"
 }
}

2.使用组件

<view>
 <print-popups ifOpen='{{modelStatus}}' bind:ifClose='closeModel'>
 <view slot='popups_main' class='popups_main'>
 <view class='popups_item'>添加新设备</view>
 <view class='popups_item print_name'>
 <input class='print_input' value='设备1' auto-focus />
 <view class='print_tip'>(点击设备可编辑)</view>
 </view>
 <view class='popups_item print_id'>
 <input placeholder="请输入新添设备ID" />
 <view class='print_id_check'>可用</view>
 </view>
 <button class='popups_item print_btn' type='primary' size='mini'>添加</button>
 </view>
 </print-popups> 
</view>

3.添加隐藏/显示方法

Page({
 /**
 * 页面的初始数据
 */
 data: {
 modelStatus: false
 },
 /**
 * 点击按钮打开模态框
 */
 openModel () {
 const modelStatus = !this.modelStatus
 this.setData({ modelStatus})
 },
 /**
 * 子组件触发的事件
 */ 
 closeModel (event) {
 console.log(event.detail.value)
 this.setData({
 modelStatus: event.detail.value
 })
 }
})

三、模态框组件源码

1.Json文件

{
 "component": true,
 "usingComponents": {}
}

2.wxml文件

需要在阿里图标库找一张close.png的图片。

<!--components/popups/popups.wxml-->
<view wx:if="{{ifOpen}}">
 <view class='popups_shade' bindtap='popupsClose'></view>
 <view class='popups_content'>
 <image src='./images/close.png' class='popups_close' bindtap='popupsClose'></image>
 <slot name='popups_main'/>
 </view>
</view>

3.wxss文件

/* components/popups/popups.wxss */
/* 遮罩 */
.popups_shade {
 width: 100%;
 height: 100%;
 position: fixed;
 top: 0;
 left: 0;
 z-index: 1000;
 background: #000;
 opacity: 0.7;
 overflow: hidden;
}
/* 弹出层内容 */
.popups_content {
 width: 500rpx;
 height: 350rpx;
 overflow: hidden;
 position: fixed;
 top: 0px;
 left: 0px;
 bottom: 0px;
 right: 0px;
 margin: auto;
 z-index: 1001;
 background: #FAFAFA;
 border-radius: 5px;
}
.popups_close {
 width: 30rpx;
 height: 30rpx;
 position: absolute;
 right: 3px;
 top: 3px;
}

4.js文件

// components/popups/popups.js
Component({
 options: {
 multipleSlots: true
 },
 /**
 * 组件的属性列表
 */
 properties: {
 ifOpen: Boolean
 },

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

 /**
 * 父子组件通信
 * 组件的方法列表
 */
 methods: {
 popupsClose () {
 console.log('关闭弹出层' + this.properties.ifOpen)
 this.triggerEvent('ifClose', { value: !this.properties.ifOpen})
 }
 }
})

四、思路

主要是使用slot插槽可以不需要定义内容,可以在使用组件的页面自定义,这样就可以很好提高扩展性!

为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript Base64编码和解码,实现URL参数传递。
Sep 18 Javascript
javaScript call 函数的用法说明
Apr 09 Javascript
javascript学习笔记(二) js一些基本概念
Jun 18 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
Mar 19 Javascript
javascript中不等于的代码是什么怎么写
Dec 29 Javascript
javascript闭包概念简单解析(推荐)
Jun 03 Javascript
Bootstrap学习笔记之css样式设计(2)
Jun 07 Javascript
canvas 实现中国象棋
Feb 17 Javascript
layui table设置某一行的字体颜色方法
Sep 05 Javascript
vue中使用GraphQL的实例代码
Nov 04 Javascript
JS正则表达式验证密码强度
Mar 18 Javascript
vue-video-player视频播放器使用配置详解
Oct 23 Javascript
详解Vue3中对VDOM的改进
Apr 23 #Javascript
微信小程序实现滑动操作代码
Apr 23 #Javascript
微信小程序图片右边加两行文字的代码
Apr 23 #Javascript
Vue中通过vue-router实现命名视图的问题
Apr 23 #Javascript
利用原生JS实现欢乐水果机小游戏
Apr 23 #Javascript
JS eval代码快速解密实例解析
Apr 23 #Javascript
浅谈vue权限管理实现及流程
Apr 23 #Javascript
You might like
PHP字符串处理的10个简单方法
2010/06/30 PHP
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
2014/11/28 Javascript
简介JavaScript中用于处理正切的Math.tan()方法
2015/06/15 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
微信小程序block的使用教程
2018/04/01 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
es6中比较有用的7个技巧小结
2019/07/12 Javascript
微信小程序 select 下拉框组件功能
2019/09/09 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
更新修改后的Python模块方法
2019/03/03 Python
使用OpCode绕过Python沙箱的方法详解
2019/09/03 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
解决pycharm 格式报错tabs和space不一致问题
2021/02/26 Python
html+css3实现的登录界面
2020/12/09 HTML / CSS
佳能法国商店:Canon法国
2019/02/14 全球购物
环保宣传标语
2014/06/12 职场文书
市场营销专业应届生自荐信
2014/06/19 职场文书
2015年党支部公开承诺书
2015/01/22 职场文书
小学生读书笔记
2015/07/01 职场文书
生产实习心得体会范文
2016/01/22 职场文书
JavaScript执行机制详细介绍
2021/12/06 Javascript
如何在Python中妥善使用进度条详解
2022/04/05 Python