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


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 相关文章推荐
JavaScipt基本教程之前言
Jan 16 Javascript
基于jquery ajax 用户无刷新登录方法详解
Apr 28 Javascript
jquery ajax同步异步的执行最终解决方案
Apr 26 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
Apr 15 Javascript
省市选择的简单实现(基于zepto.js)
Jun 21 Javascript
jQuery实现的导航下拉菜单效果示例
Sep 05 Javascript
基于JavaScript实现右键菜单和拖拽功能
Nov 28 Javascript
微信小程序 本地存储及登录页面处理实例详解
Jan 11 Javascript
JavaScript时间戳与时间日期间相互转换
Dec 11 Javascript
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
100行代码实现vue表单校验功能(小白自编)
Nov 19 Javascript
JavaScript实现滑动门效果
Jan 18 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截取后台登陆密码的代码
2012/05/05 PHP
php 在windows下配置虚拟目录的方法介绍
2013/06/26 PHP
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
phpStudy配置多站点多域名和多端口的方法
2017/09/01 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
bcastr2.0 通用的图片浏览器
2006/11/22 Javascript
用JavaScript实现仿Windows关机效果
2007/03/10 Javascript
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
Js base64 加密解密介绍
2013/10/11 Javascript
jquery列表拖动排列(由项目提取相当好用)
2014/06/17 Javascript
JavaScript中DOM详解
2015/04/13 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
2017/01/19 Javascript
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
vue之浏览器存储方法封装实例
2018/03/15 Javascript
微信小程序如何调用json数据接口并解析
2019/06/29 Javascript
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
python 调用HBase的简单实例
2016/12/18 Python
Python可变参数用法实例分析
2017/04/02 Python
在django中使用自定义标签实现分页功能
2017/07/04 Python
Python(Django)项目与Apache的管理交互的方法
2018/05/16 Python
解决seaborn在pycharm中绘图不出图的问题
2018/05/24 Python
Python交互环境下实现输入代码
2018/06/22 Python
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
python调用有道智云API实现文件批量翻译
2020/10/10 Python
行政主管职责范本
2014/03/07 职场文书
父母对孩子说的话
2014/04/12 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
离婚协议书范本(2014版)
2014/09/28 职场文书
公安交警个人对照检查材料思想汇报
2014/10/01 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python