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


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 相关文章推荐
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
Jul 31 Javascript
javascript感应鼠标图片透明度显示的方法
Feb 24 Javascript
JavaScript访问字符串中单个字符的两种方法
Jul 03 Javascript
js判断一个字符串是以某个字符串开头的简单实例
Dec 27 Javascript
js生成随机颜色方法代码分享(三种)
Dec 29 Javascript
图文详解Javascript中的上下文和作用域
Feb 15 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
Aug 15 jQuery
Angular6 写一个简单的Select组件示例
Aug 20 Javascript
解决vue中虚拟dom,无法实时更新的问题
Sep 15 Javascript
15个顶级开源JavaScript框架和库
Oct 10 Javascript
微信小程序如何获取群聊的openGid以及名称详解
Jul 17 Javascript
jquery轻量级数字动画插件countUp.js使用详解
Oct 17 jQuery
详解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
通过5个php实例细致说明传值与传引用的区别
2012/08/08 PHP
php 批量替换html标签的实例代码
2013/11/26 PHP
PHP随机生成唯一HASH值自定义函数
2015/04/20 PHP
use jscript with List Proxy Server Information
2007/06/11 Javascript
ExtJs使用总结(非常详细)
2012/03/22 Javascript
jQuery对象和Javascript对象之间转换的实例代码
2013/03/20 Javascript
jQuery在iframe中无法弹出对话框的解决方法
2014/01/12 Javascript
js拖拽一些常见的思路方法整理
2014/03/19 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
Vue方法与事件处理器详解
2016/12/01 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
Javascript中八种遍历方法的执行速度深度对比
2017/04/25 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
2018/12/13 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
如何获取vue单文件自身源码路径
2019/05/06 Javascript
JavaScript 事件代理需要注意的地方
2020/09/08 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
Python实现的爬虫功能代码
2017/06/24 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
Python实现字典按key或者value进行排序操作示例【sorted】
2019/05/03 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
Python 绘制酷炫的三维图步骤详解
2019/07/12 Python
python global和nonlocal用法解析
2020/02/03 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
2020/04/13 Python
Html5定位终极解决方案
2020/02/05 HTML / CSS
美国领先的家庭健康检测试剂盒提供商:LetsGetChecked
2019/03/18 全球购物
造价工程师个人求职信
2013/09/21 职场文书
秋游活动策划方案
2014/02/16 职场文书
作风建设演讲稿
2014/05/23 职场文书
村委会贫困证明范本
2014/09/17 职场文书
关于感谢信的范文
2015/01/23 职场文书
亮剑观后感300字
2015/06/05 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
Golang实现可重入锁的示例代码
2022/05/25 Golang