微信小程序自定义toast的实现代码


Posted in Javascript onNovember 16, 2018

今天写微信小程序突然发现一个尴尬的问题,请求报错需要提示,就去小程序API里找,可悲的小程序的toast并不能满足我的需求,原生提供的方法调用如下

wx.showToast({
  title: '成功',
  icon: 'succes',
  duration: 1000,
  mask:true
})

下面是官方API的说明

可以看到支持的图标只有两种,连基本的warning和error都没有,最可悲的是title最多只支持7个汉字的长度,完全不能忍啊,现在哪个框架里还没有个正儿八经提示框的组件,想想还是自己写一个算了,下面是效果图

下面来说下小程序实现自定义公共组件的方法,以自定义toast为例

1、新建toast组件

在toast.json里修改如下,设置为组件

{
 "component": true
}

toast.wxml

<view class='wx-toast-box' animation="{{animationData}}">
 <view class='wx-toast-content'>
  <view class='wx-toast-toast'>{{ content }}</view>
 </view>
</view>

定义样式,toast.wxss,这里使用flex布局,代码很简单,也没什么好说的,直接贴上

.wx-toast-box{
 display: flex;
 width: 100%;
 justify-content: center;
 position: fixed;
 z-index: 999;
 bottom:80rpx;
 opacity: 0;
}
.wx-toast-content{
 max-width: 80%;
 border-radius:30rpx;
 padding: 30rpx;
 background: rgba(0, 0, 0, 0.6);
}
.wx-toast-toast{
 height: 100%;
 width: 100%;
 color: #fff;
 font-size: 28rpx;
 text-align: center;
}

toast.js

Component({
 options: {
  multipleSlots: true // 在组件定义时的选项中启用多slot支持 
 },
 /** 
  * 私有数据,组件的初始数据 
  * 可用于模版渲染 
  */
 data: { // 弹窗显示控制 
  animationData: {},
  content: '提示内容'
 },
 /**
  * 组件的方法列表 
  */
 methods: {
  /** 
   * 显示toast,定义动画
   */
  showToast(val) {
   var animation = wx.createAnimation({
    duration: 300,
    timingFunction: 'ease',
   })
   this.animation = animation
   animation.opacity(1).step()
   this.setData({
    animationData: animation.export(),
    content: val
   })
   /**
    * 延时消失
    */
   setTimeout(function () {
    animation.opacity(0).step()
    this.setData({
     animationData: animation.export()
    })
   }.bind(this), 1500)
  }
 }
})

2、在父级组件中调用公共组件,以login页面为例

在login.json中注册组件

{
 "navigationBarTitleText": "登录注册",
 "usingComponents":{
  "toast": "../common/toast/toast"
 }
}

login.wxml中调用组件

<view>
 <toast id='toast'>
 </toast>
</view>

login.js里点击登陆录的时候调用显示showDialog方法

onReady: function () {
  this.toast = this.selectComponent("#toast");
},
listenerLogin: function() {
  this.dialog.showToast('恭喜你,获得了toast');
},

总结

以上所述是小编给大家介绍的微信小程序自定义toast的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Ajax执行顺序流程及回调问题分析
Dec 10 Javascript
javascript加号&quot;+&quot;的二义性说明
Mar 04 Javascript
JS通过相同的name进行表格求和代码
Aug 18 Javascript
js加入收藏夹代码(兼容ie/ff/op)
May 16 Javascript
javascript验证身份证号
Mar 03 Javascript
jQuery动态添加
Apr 07 Javascript
详解js实现线段交点的三种算法
Aug 09 Javascript
jQuery中内容过滤器简单用法示例
Mar 31 jQuery
vue权限路由实现的方法示例总结
Jul 29 Javascript
深入理解Vue.js轻量高效的前端组件化方案
Dec 10 Javascript
vue学习笔记之slot插槽基本用法实例分析
Feb 01 Javascript
js实现简单扫雷
Nov 27 Javascript
vue实现简单的星级评分组件源码
Nov 16 #Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
Nov 16 #Javascript
layui-laydate时间日历控件使用方法详解
Nov 15 #Javascript
laydate如何根据开始时间或者结束时间限制范围
Nov 15 #Javascript
layDate插件设置开始和结束时间
Nov 15 #Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
Nov 15 #Javascript
vue中使用better-scroll实现滑动效果及注意事项
Nov 15 #Javascript
You might like
PHP 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
PHP中spl_autoload_register函数的用法总结
2013/11/07 PHP
PHP会话控制:Session与Cookie详解
2014/09/27 PHP
php调用新浪短链接API的方法
2014/11/08 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
PHP与Java对比学习日期时间函数
2016/07/03 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
2016/10/29 PHP
PJBlog插件 防刷新的在线播放器
2006/10/25 Javascript
Firefox中使用outerHTML的2种解决方法
2014/06/07 Javascript
javascript的日期对象、数组对象、二维数组使用说明
2014/12/22 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
AngularJs+Bootstrap实现漂亮的计算器
2017/08/10 Javascript
Vue中对iframe实现keep alive无刷新的方法
2019/07/23 Javascript
Python使用Flask框架获取当前查询参数的方法
2015/03/21 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
python turtle 绘制太极图的实例
2019/12/18 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
迪斯尼商品官方网站:ShopDisney
2016/08/01 全球购物
绘画设计学生的个人自我评价
2013/09/20 职场文书
党性心得体会
2014/09/03 职场文书
介绍信怎么写
2015/01/30 职场文书
社会主义核心价值观主题教育活动总结
2015/05/07 职场文书
简单的辞职信模板
2015/05/12 职场文书
消费者理赔投诉书
2015/07/02 职场文书
文明上网主题班会
2015/08/14 职场文书
Python insert() / append() 用法 Leetcode实战演示
2021/03/31 Python
Vue实现导入Excel功能步骤详解
2021/07/03 Vue.js
python编程实现清理微信重复缓存文件
2021/11/01 Python