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


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 相关文章推荐
jQuery1.6 正式版发布并提供下载
May 05 Javascript
JavaScript 实现鼠标拖动元素实例代码
Feb 24 Javascript
js实现获取两个日期之间所有日期的方法
Jun 17 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
Jun 12 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
Jun 13 Javascript
vue 实现类似淘宝星级评分的示例
Mar 01 Javascript
webpack源码之loader机制详解
Apr 06 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
Apr 20 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
Jun 21 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
Sep 24 Javascript
微信小程序实现点击页面出现文字
Sep 21 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
Nov 04 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解码unicode编码的中文字符代码分享
2014/08/13 PHP
php实现读取内存顺序号
2015/03/29 PHP
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
Laravel 创建可以传递参数 Console服务的例子
2019/10/14 PHP
Locate a File Using a File Open Dialog Box
2007/06/18 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
禁止拷贝网页内容的js代码
2014/01/22 Javascript
jQuery仿gmail实现fixed布局的方法
2015/05/27 Javascript
js限制input标签中只能输入中文
2015/06/26 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
js仿微信语音播放实现思路
2016/12/12 Javascript
NodeJs下的测试框架Mocha的简单介绍
2017/02/22 NodeJs
jquery编写日期选择器
2017/03/16 Javascript
详解Angular 4.x NgIf 的用法
2017/05/22 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
vue自动路由-单页面项目(非build时构建)
2019/04/30 Javascript
Vue实现Header渐隐渐现效果的实例代码
2020/11/05 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
Python线程中对join方法的运用的教程
2015/04/09 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
导入tensorflow时报错:cannot import name 'abs'的解决
2019/10/10 Python
python的setattr函数实例用法
2020/12/16 Python
python解包概念及实例
2021/02/17 Python
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
初二物理教学反思
2014/01/29 职场文书
业务员自荐信范文
2014/04/20 职场文书
幼师辞职信怎么写
2015/02/27 职场文书
《西门豹》教学反思
2016/02/23 职场文书
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS