微信小程序自定义模态弹窗组件详解


Posted in Javascript onDecember 24, 2019

小程序自带一个showModal弹窗,调用很简单,但是限制很多,title有字数限制,中间的content也只能放文字不能放组件,所以作为一个前端碰到那种连续好几个跟微信自带的模态弹窗风格一模一样,但是功能又花里胡哨的UI稿,就不能忍受频繁的复制粘贴了。自己写了一个组件,虽然调用起来比微信自带的麻烦一点,但是还蛮实用的。

微信小程序自定义模态弹窗组件详解

微信小程序自定义模态弹窗组件详解

微信小程序自定义模态弹窗组件详解

效果大概长这样。

上代码:

wxml:

<!-- 自定义模态弹窗 -->
<view class="modalDIY" wx:if="{{showModal}}">
 <view class="bg">
 <view class="modalTitle">{{title}}</view>
 <view class="modalContent">
  <view>{{content}}</view>
  <slot></slot>
 </view>
 <view class="modalOperate">
  <view bindtap="_cancel" hidden="{{!showCancel}}" style="color:{{cancelColor}}" class="cancelBtn">{{cancelText}}</view>
  <view bindtap="_comfirm" class="comfirmBtn" style="color:{{confirmColor}}">{{confirmText}}</view>
 </view>
 </view>
</view>

js:

const regeneratorRuntime = require('../../dependence/generator-runtime.js'); //这是一个es6转es5的js
Component({
 properties: {
 // 这里定义了innerText属性,属性值可以在组件使用时指定
 },
 data: {
 showModal: false,
 title: '温馨提示',
 content: '',
 showCancel: true,
 cancelColor: '#3a3a3a',
 cancelText: '取消',
 confirmColor: '#00800',
 confirmText: '确认',
 comfirm() { },
 cancel() { }
 },
 methods: {
 // 外部方法调用
 showModal(params) {
  this.setData({
  showModal: true,
  title: params.title || '温馨提示', //title
  content: params.content || '',//中间内容
  showCancel: params.showCancel == undefined ? true : params.showCancel,//是否显示左侧
  cancelColor: params.cancelColor || '#3a3a3a',//取消按钮文字颜色
  cancelText: params.cancelText || '取消',//左侧按钮文字
  confirmColor: params.confirmColor || '#09BA07',//右侧按钮文字颜色
  confirmText: params.confirmText || '确认',//右侧按钮文字
  /* 回调函数 */
  comfirm: params.comfirm || function(){},//点击确认(右侧按钮)
  cancel: params.cancel || function(){}//点击取消(左侧按钮)
  })
 },
 // 点击确定
 _comfirm() {
  this.setData({
  showModal: false
  },()=>{
  this.data.comfirm();
  })
 },
 // 点击取消
 _cancel() {
  this.setData({
  showModal: false
  },()=>{
  this.data.cancel();
  })
 }
 }
})
 
// 调用示例
// 引入组件后通过js selectComponent('#id')方法获得组件对象 再调用组件对象下的showModal方法 传入配置参数即可 可以在组件中自定义内容节点

wxss:

.modalDIY{
 position: fixed;
 z-index: 99999999;
 top: 0;
 left: 0;
 width: 100vw;
 height: 100vh;
 background: rgba(0,0,0,0.6);
 display: flex;
 align-items: center;
 align-content: center;
 justify-content: center;
}
.bg{
 background: #fff;
 text-align: center;
 border-radius: 10rpx;
 width: 90%;
}
.modalTitle{
 padding: 30rpx 40rpx 0 40rpx;
 font-size: 36rpx;
 line-height: 55rpx;
 color: #000;
}
.modalContent{
 padding: 20rpx 40rpx;
 font-size: 30rpx;
 color: #7a7a7a;
}
.modalOperate{
 height: 100rpx;
 line-height: 100rpx;
 border-top: 2rpx solid #eee;
 display: flex;
}
.cancelBtn{
 border-right: 2rpx solid #eee;
 flex: 1;
}
.comfirmBtn{
 flex: 1;
}

json:(记住要把component设置成true)

{
 "component": true,
 "usingComponents": {}
}

调用的时候需要贴别说明一下,拿我上面示例图的第二个弹窗的调用为例

首先引入组件

微信小程序自定义模态弹窗组件详解

在wxml中引用组件

微信小程序自定义模态弹窗组件详解

在js中可以配置一些颜色之类的样式

首先通过selectComponent这个方法获得组件对象,可以存成全局的常量。

微信小程序自定义模态弹窗组件详解

我们要调用这个对象下自己封装的showModal方法

微信小程序自定义模态弹窗组件详解

完毕。

为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
脚本吧 - 幻宇工作室用到js,超强推荐expand.js
Dec 23 Javascript
jquery插件 cluetip 关键词注释
Jan 12 Javascript
JavaScript isArray()函数判断对象类型的种种方法
Oct 11 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
Jan 15 Javascript
javascript学习笔记(八) js内置对象
Jun 19 Javascript
深入分析下javascript中的[]()+!
Jul 07 Javascript
JS+CSS实现DIV层的展开、收缩效果
Jan 28 Javascript
jquery获取easyui日期控件的值实现方法
Nov 09 Javascript
jQuery实现手势解锁密码特效
Aug 14 jQuery
使用JavaScript实现点击循环切换图片效果
Sep 03 Javascript
JS分页的实现(同步与异步)
Sep 16 Javascript
微信小程序使用Promise简化回调
Feb 06 Javascript
js实现鼠标点击页面弹出自定义文字效果
Dec 24 #Javascript
javascript实现鼠标点击生成文字特效
Dec 24 #Javascript
Javascript实现鼠标点击冒泡特效
Dec 24 #Javascript
javascript实现点击星星小游戏
Dec 24 #Javascript
JS实现小星星特效
Dec 24 #Javascript
JS实现星星海特效
Dec 24 #Javascript
JS实现图片切换特效
Dec 23 #Javascript
You might like
php 阴历-农历-转换类代码
2012/01/16 PHP
php 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
php在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
微信支付的开发流程详解
2016/09/13 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
js静态方法与实例方法分析
2011/07/04 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
jquery实现动静态条形统计图
2015/08/17 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
简单实现IONIC购物车功能
2017/01/10 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
js断点调试经验分享
2017/12/08 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
2020/07/27 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
[02:32]“虐狗”镜头慎点 2016国际邀请赛中国区预选赛现场玩家采访
2016/06/28 DOTA
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
Python smallseg分词用法实例分析
2015/05/28 Python
基于wxpython开发的简单gui计算器实例
2015/05/30 Python
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
基于Python代码编辑器的选用(详解)
2017/09/13 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
Python实现统计英文文章词频的方法分析
2019/01/28 Python
Python线程障碍对象Barrier原理详解
2019/12/02 Python
利用python实现平稳时间序列的建模方式
2020/06/03 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
你的自行车健身专家:FaFit24
2016/11/16 全球购物
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
法学毕业生自我鉴定
2013/11/08 职场文书
爽歪歪广告词
2014/03/20 职场文书
品德与社会教学反思
2016/02/24 职场文书