微信小程序自定义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 相关文章推荐
jQuery中get()方法用法实例
Dec 27 Javascript
jQuery控制cookie过期时间的方法
Apr 07 Javascript
jQuery背景插件backstretch使用指南
Apr 21 Javascript
动态加载JavaScript文件的两种方法
Apr 22 Javascript
Node.JS文件系统解析实例详解
May 15 Javascript
使用js获取伪元素的content实例
Oct 24 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
Feb 06 Javascript
详解javascript中的变量提升和函数提升
May 24 Javascript
微信小程序实现折叠与展开文章功能
Jun 12 Javascript
微信小程序使用swiper组件实现类3D轮播图
Aug 29 Javascript
Vue 权限控制的两种方法(路由验证)
Aug 16 Javascript
基于layui table返回的值的多级嵌套的解决方法
Sep 19 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
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
刚才在简化php的库,结果发现很多东西
2006/12/31 PHP
PHP引用符&amp;的用法详细解析
2013/08/22 PHP
PHP实现一个限制实例化次数的类示例
2019/09/16 PHP
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
最常用的12种设计模式小结
2011/08/09 Javascript
js异步加载的三种解决方案
2013/03/04 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
jQuery网页右侧广告跟随滚动代码分享
2020/04/20 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
微信小程序的动画效果详解
2017/01/18 Javascript
jQuery返回定位插件详解
2017/05/15 jQuery
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
2017/05/15 jQuery
php register_shutdown_function函数详解
2017/07/23 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
Django URL传递参数的方法总结
2016/08/28 Python
Python 描述符(Descriptor)入门
2016/11/20 Python
详解python 字符串和日期之间转换 StringAndDate
2017/05/04 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
复古风格的女装和装饰品:ModCloth
2017/12/29 全球购物
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
学习2014年全国两会心得体会
2014/03/12 职场文书
教师求职信
2014/06/17 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
小学教师个人总结
2015/02/05 职场文书
专职安全员岗位职责
2015/04/11 职场文书
夫妻吵架保证书
2015/05/08 职场文书
莫言诺贝尔获奖感言(全文)
2015/07/31 职场文书
初中班主任工作随笔
2015/08/15 职场文书
百年校庆宣传标语口号
2015/12/26 职场文书
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript
pandas中关于apply+lambda的应用
2022/02/28 Python