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


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中设置元素class的三种方法小结
Aug 28 Javascript
JavaScript 实现类的多种方法实例
May 01 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
Feb 04 Javascript
jqeury-easyui-layout问题解决方法
Mar 24 Javascript
jquery使用jxl插件导出excel示例
Apr 14 Javascript
一个简单的jQuery计算器实现了连续计算功能
Jul 21 Javascript
浅谈JavaScript数据类型
Mar 03 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
Jan 04 Javascript
浅析location.href跨窗口调用函数
Nov 22 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
Oct 10 Javascript
vue实现点击隐藏与显示实例分享
Feb 13 Javascript
通过实例解析js简易模块加载器
Jun 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中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
破解Session cookie的方法
2006/07/28 Javascript
用ASP将SQL搜索出来的内容导出为TXT的代码
2007/07/27 Javascript
JavaScript Cookie的读取和写入函数
2009/12/08 Javascript
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
js截取中英文字符串、标点符号无乱码示例解读
2014/04/17 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
javascript中eval和with用法实例总结
2015/11/30 Javascript
鼠标悬停小图标显示大图标
2016/01/22 Javascript
AngularJS实现单独作用域内的数据操作
2016/09/05 Javascript
jQuery中fadein与fadeout方法用法示例
2016/09/16 Javascript
使用vue.js写一个tab选项卡效果
2017/03/25 Javascript
jQuery实现火车票买票城市选择切换功能
2017/09/15 jQuery
在 Node.js 中使用原生 ES 模块方法解析
2017/09/19 Javascript
详解 vue.js用法和特性
2017/10/15 Javascript
微信小程序图片右边加两行文字的代码
2020/04/23 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
JS实现手风琴特效
2020/11/08 Javascript
微信小程序自定义胶囊样式
2020/12/27 Javascript
跟老齐学Python之有容乃大的list(4)
2014/09/28 Python
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
python处理按钮消息的实例详解
2017/07/11 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
Python中类的创建和实例化操作示例
2019/02/27 Python
Python socket模块实现的udp通信功能示例
2019/04/10 Python
python对象与json相互转换的方法
2019/05/07 Python
Python用Jira库来操作Jira
2020/12/28 Python
Linux的主要特性
2016/09/03 面试题
公司领导班子民主生活会对照检查材料
2014/10/02 职场文书
元宵节晚会主持词
2015/07/01 职场文书
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL
5个pandas调用函数的方法让数据处理更加灵活自如
2022/04/24 Python