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


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 相关文章推荐
js的回调函数详解
Jan 05 Javascript
JavaScript数据结构与算法之栈详解
Mar 12 Javascript
JavaScript中逗号运算符介绍及使用示例
Mar 13 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
Aug 06 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
Dec 25 Javascript
基于javascript实现动态显示当前系统时间
Jan 28 Javascript
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 jQuery
浅谈Angular7 项目开发总结
Dec 19 Javascript
layui自定义工具栏的方法
Sep 19 Javascript
JavaScript实现滑动门效果
Jan 18 Javascript
js实现查询商品案例
Jul 22 Javascript
JavaScript实现刮刮乐效果
Nov 01 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
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
PHP 验证登陆类分享
2015/03/13 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
防止xss和sql注入:JS特殊字符过滤正则
2013/04/18 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
2013/09/29 Javascript
angularJS 入门基础
2015/02/09 Javascript
实例讲解JS中setTimeout()的用法
2016/01/28 Javascript
基于JavaScript实现在新的tab页打开url
2016/08/04 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
2017/02/28 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
JS执行控制之节流模式实例分析
2018/12/21 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
2020/04/10 Javascript
jQuery实现简单评论功能
2020/08/19 jQuery
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
python实现简易内存监控
2018/06/21 Python
深入了解Python iter() 方法的用法
2019/07/11 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
2019/09/24 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
什么是Oracle的后台进程background processes?都有哪些后台进程?
2012/04/26 面试题
《故乡》教学反思
2014/04/10 职场文书
医药销售自我评价200字
2014/09/11 职场文书
群众路线教师自我剖析材料
2014/09/29 职场文书
2014最新党员违纪检讨书
2014/10/12 职场文书
电子商务实训报告总结
2014/11/05 职场文书
关于车尾的标语大全
2015/08/11 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书
Android中View.post和Handler.post的关系
2022/06/05 Java/Android