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


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注入技巧
Jun 22 Javascript
JavaScript 版本自动生成文章摘要
Jul 23 Javascript
js word表格动态添加代码
Jun 07 Javascript
文件编码导致jquery失效的解决方法
Jun 26 Javascript
jQuery中outerWidth()方法用法实例
Jan 19 Javascript
JavaScript实现各种排序的代码详解
Aug 28 Javascript
BootStrap给table表格的每一行添加一个按钮事件
Sep 07 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
Oct 08 Javascript
微信小程序渲染性能调优小结
Jul 30 Javascript
vue-resource:jsonp请求百度搜索的接口示例
Nov 09 Javascript
Vue SPA 初次进入加载动画实现代码
Nov 14 Javascript
openlayers4.6.5实现距离量测和面积量测
Sep 25 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设计模式 Observer(观察者模式)
2011/06/26 PHP
php列出一个目录下的所有文件的代码
2012/10/09 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
基于jquery自定义图片热区效果
2012/07/21 Javascript
js函数返回多个返回值的示例代码
2013/11/05 Javascript
javascript 实现字符串反转的三种方法
2013/11/23 Javascript
两种不同的方法实现js对checkbox进行全选和反选
2014/05/13 Javascript
javascript操作字符串的原生方法
2014/12/22 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
text-align:justify实现文本两端对齐 兼容IE
2015/08/19 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)
2016/02/16 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
微信小程序mpvue点击按钮获取button值的方法
2019/05/29 Javascript
浅谈javascript错误处理
2019/08/11 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
Python常见字典内建函数用法示例
2018/05/14 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
python实现网页自动签到功能
2019/01/21 Python
python实现简单日期工具类
2019/04/24 Python
详解python深浅拷贝区别
2019/06/24 Python
浅谈Python中range与Numpy中arange的比较
2020/03/11 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
Flask中jinja2的继承实现方法及实例
2021/03/03 Python
HTML5之tabindex属性全面解析
2016/07/07 HTML / CSS
苹果香港官方商城:Apple香港
2016/09/14 全球购物
AC Lens:购买隐形眼镜
2017/02/26 全球购物
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
会计专业个人求职信范文
2014/01/08 职场文书
英文导游欢迎词
2014/01/11 职场文书
消防安全责任书
2014/04/14 职场文书