微信小程序自定义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 相关文章推荐
javascript multibox 全选
Mar 22 Javascript
jquery实现先淡出再折叠收起的动画效果
Aug 07 Javascript
Web Uploader文件上传插件使用详解
May 10 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
Nov 22 Javascript
javascript实现获取图片大小及图片等比缩放的方法
Nov 24 Javascript
JS无缝滚动效果实现方法分析
Dec 21 Javascript
vue中路由验证和相应拦截的使用详解
Dec 13 Javascript
详解webpack中的hash、chunkhash、contenthash区别
Jan 05 Javascript
对vue.js中this.$emit的深入理解
Feb 23 Javascript
iview日期控件,双向绑定日期格式的方法
Mar 15 Javascript
JavaScript隐式类型转换代码实例
May 29 Javascript
uin-app+mockjs实现本地数据模拟
Aug 26 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学习的路线图
2013/07/10 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
js word表格动态添加代码
2010/06/07 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
在javascript中执行任意html代码的方法示例解读
2013/12/25 Javascript
jQuery设置和移除文本框默认值的方法
2015/03/09 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
Web技术实现移动监测的介绍
2017/09/18 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
node使用promise替代回调函数
2018/05/07 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
python实现哈希表
2014/02/07 Python
使用python 获取进程pid号的方法
2014/03/10 Python
处理Python中的URLError异常的方法
2015/04/30 Python
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
利用python画出折线图
2018/07/26 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
Python3爬虫全国地址信息
2019/01/05 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
Python线程指南分享
2019/11/19 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
亚马逊巴西站:Amazon.com.br
2019/09/22 全球购物
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
请说出这段代码执行后a和b的值分别是多少
2015/03/28 面试题
挖掘机司机岗位职责
2014/02/12 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
个性与发展自我评价
2015/03/06 职场文书
酒店温馨提示语
2015/07/14 职场文书
好人好事新闻稿
2015/07/17 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书
创业计划书之奶茶店开店方案范本!
2019/08/06 职场文书
apache基于端口创建虚拟主机的示例
2021/04/22 Servers