微信小程序自定义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 相关文章推荐
JS应用之禁止抓屏、复制、打印
Feb 21 Javascript
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
Mar 31 Javascript
js实现瀑布流的一种简单方法实例分享
Nov 04 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
Sep 25 Javascript
jQuery Ajax()方法使用指南
Nov 19 Javascript
深入浅出分析javaScript中this用法
May 09 Javascript
JavaScript中字符串拼接的基本方法
Jul 07 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
Jun 17 Javascript
最新Javascript程序员面试试题和解题方法
Nov 23 Javascript
对vue里函数的调用顺序介绍
Mar 17 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
May 28 Javascript
JavaScript RegExp 对象用法详解
Sep 24 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 substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
一个不易被发现的PHP后门代码解析
2014/07/05 PHP
php绘制圆形的方法
2015/01/24 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
JavaScript高级程序设计 DOM学习笔记
2011/09/10 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
JS实现文字向下滚动完整实例
2015/02/06 Javascript
JQuery跳出each循环的方法
2015/04/16 Javascript
js实现搜索框关键字智能匹配代码
2020/03/26 Javascript
原生js编写autoComplete插件
2016/04/13 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
值得收藏的八个常用的js正则表达式
2018/10/19 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
在vue中实现echarts随窗体变化
2020/07/27 Javascript
微信小程序实现星星评分效果
2020/11/01 Javascript
把MySQL表结构映射为Python中的对象的教程
2015/04/07 Python
python访问系统环境变量的方法
2015/04/29 Python
Python Web框架Tornado运行和部署
2020/10/19 Python
在Pycharm中设置默认自动换行的方法
2019/01/16 Python
用Python PIL实现几个简单的图片特效
2019/01/18 Python
Python实现获取系统临时目录及临时文件的方法示例
2019/06/26 Python
python dataframe NaN处理方式
2019/12/26 Python
Python内置函数property()如何使用
2020/09/01 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
编程实现当输入某产品代码则打印出该产品记录的功能
2014/05/03 面试题
资深财务管理人员自我评价
2013/09/22 职场文书
宣传保护环境的公益广告词
2014/03/13 职场文书
个人专业技术总结
2015/03/05 职场文书
员工升职自荐信
2015/03/27 职场文书
介绍信范文大全
2015/05/07 职场文书
浅谈MySQL之select优化方案
2021/08/07 MySQL