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


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 文章截取部分无损html显示实现代码
May 04 Javascript
关于js类的定义
Jun 28 Javascript
为jquery的ajaxfileupload增加附加参数的方法
Mar 04 Javascript
js防止DIV布局滚动时闪动的解决方法
Oct 30 Javascript
jQuery学习笔记之创建DOM元素
Jan 19 Javascript
JavaScript实现图片轮播的方法
Jul 31 Javascript
JavaScript为事件句柄绑定监听函数实例详解
Dec 15 Javascript
JavaScript 函数的执行过程
May 09 Javascript
Vue 中对图片地址进行拼接的方法
Sep 03 Javascript
vue图片上传本地预览组件使用详解
Feb 20 Javascript
微信小程序如何自定义table组件
Jun 29 Javascript
vue-router路由模式详解(小结)
Aug 26 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
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
PHP命名空间和自动加载类
2016/04/03 PHP
javascript 动态添加表格行
2006/06/22 Javascript
JavaScript CSS菜单功能 改进版
2008/12/20 Javascript
js或css文件后面跟参数的原因说明
2010/01/09 Javascript
JavaScript中yield实用简洁实现方式
2010/06/12 Javascript
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
es6数值的扩展方法
2019/03/11 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
JavaScript 处理树数据结构的方法示例
2019/06/16 Javascript
JavaScript实现秒杀时钟倒计时
2019/09/29 Javascript
Vue.js 无限滚动列表性能优化方案
2019/12/02 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
python爬虫常用的模块分析
2014/08/29 Python
Python中字典和JSON互转操作实例
2015/01/19 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
python对execl 处理操作代码
2020/06/22 Python
PyTorch: Softmax多分类实战操作
2020/07/07 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
护士的岗位职责
2013/12/04 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
《爱的教育》读书心得
2014/11/08 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
篮球赛新闻稿
2015/07/17 职场文书
教师节主题班会教案
2015/08/17 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
JavaScript 对象创建的3种方法
2021/11/17 Javascript
基于PyQT5制作一个桌面摸鱼工具
2022/02/15 Python
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL