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


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 相关文章推荐
function foo的原型与prototype属性解惑
Nov 19 Javascript
20款超赞的jQuery插件 Web开发人员必备
Feb 26 Javascript
Javascript的常规数组和关联数组对比小结
May 24 Javascript
JS调用CS里的带参方法实例
Aug 01 Javascript
js实现瀑布流的一种简单方法实例分享
Nov 04 Javascript
javascript Array.prototype.slice的使用示例
Nov 14 Javascript
纯javascript实现分页(两种方法)
Aug 26 Javascript
Backbone.js框架中Model与Collection的使用实例
May 07 Javascript
BootStrap Table对前台页面表格的支持实例讲解
Dec 22 Javascript
JavaScript判断浏览器及其版本信息
Jan 20 Javascript
JS实现列表页面隔行变色效果
Mar 25 Javascript
JS设置自定义快捷键并实现图片上下左右移动
Oct 17 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版微信js-sdk支付接口类用法示例
2016/10/12 PHP
Yii2框架BootStrap样式的深入理解
2016/11/07 PHP
PHP 获取 ping 时间的实现方法
2017/09/29 PHP
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
js实现的下拉框二级联动效果
2016/04/30 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
2017/02/07 Javascript
JavaScript中数组Array.sort()排序方法详解
2017/03/01 Javascript
js 简易版滚动条实例(适用于移动端H5开发)
2017/06/26 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
微信小程序如何实现点击图片放大功能
2020/01/21 Javascript
原生javascript制作的拼图游戏实现方法详解
2020/02/23 Javascript
vue下拉刷新组件的开发及slot的使用详解
2020/12/23 Vue.js
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
Python赋值语句后逗号的作用分析
2015/06/08 Python
Python实现购物系统(示例讲解)
2017/09/13 Python
Python2.7下安装Scrapy框架步骤教程
2017/12/22 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
Pytorch中.new()的作用详解
2020/02/18 Python
Python map及filter函数使用方法解析
2020/08/06 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
HTML5如何为形状图上颜色怎么绘制具有颜色和透明度的矩形
2014/06/23 HTML / CSS
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
机电专业毕业生求职信
2013/10/27 职场文书
师范生自荐信模板
2014/05/28 职场文书
党课培训心得体会
2014/09/02 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
2015年学校办公室工作总结
2015/05/26 职场文书
文化苦旅读书笔记
2015/06/29 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书
详解Oracle块修改跟踪功能
2021/11/07 Oracle
MySQL数据库表约束讲解
2022/06/21 MySQL