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


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 获取屏幕各种宽高的方法(浏览器兼容)
May 15 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
Oct 18 Javascript
JavaScript中的undefined学习总结
Nov 30 Javascript
JS验证逗号隔开可以是中文字母数字
Apr 22 Javascript
jQuery根据表单name获取值的方法
May 24 Javascript
Javascript设计模式之装饰者模式详解篇
Jan 17 Javascript
彻底学会Angular.js中的transclusion
Mar 12 Javascript
基于JavaScript定位当前的地理位置
Apr 11 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
Aug 22 Javascript
详解组件库的webpack构建速度优化
Jun 18 Javascript
vue中keep-alive组件的入门使用教程
Jun 06 Javascript
vue基于v-charts封装双向条形图的实现代码
Dec 09 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编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
Laravel5中Cookie的使用详解
2017/05/03 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
2017/06/19 PHP
Jquery实战_读书笔记2 选择器
2010/01/22 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
2012/11/13 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
jquery实现图片翻页效果
2013/12/23 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
2016/07/28 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
vue移动端实现红包雨效果
2020/06/23 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
使用webpack将ES6转化ES5的实现方法
2019/10/13 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
2020/07/26 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
Python群发邮件实例代码
2014/01/03 Python
Python随机生成彩票号码的方法
2015/03/05 Python
玩转python爬虫之URLError异常处理
2016/02/17 Python
在Python中使用defaultdict初始化字典以及应用方法
2018/10/31 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
pycharm运行scrapy过程图解
2019/11/22 Python
基于TensorFlow常量、序列以及随机值生成实例
2020/01/04 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
python如何调用java类
2020/07/05 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
西海岸男士和男童服装:Johnnie-O
2018/03/15 全球购物
机械专业应届生求职信
2013/09/21 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
高校教师个人总结
2015/02/10 职场文书