小程序模板网

踩坑:触发bindlongtap同时触发bindtap,wx.request带参数发生错误,bindtap 多次点击

发布时间:2018-04-16 10:36 所属栏目:小程序开发教程

一:当一个元素上同时绑定了bindtap与bindlongtap的时候触发bindlongtap同时依然会触发bindtap

分享者:bug_zero,原文地址 
解决方案: 
由于目前在微信小程序上bindlongtap被放置在bindtap后面触发,同时bindtap触发时间为touchend,则我们可以额外自定义一个函数用来判断触发的是tap还是longtap代码如下(在需要处理的页面page内定义):

 

				
  1. //touchstart时候触发
  2. setTapStartTime : function () {
  3. this.setData({
  4. startTime : Date.now()
  5. })
  6. },
  7. //tap或者longtap时候触发时判断
  8. isTap : function () {
  9. return Date.now() - this.data.startTime < 200;
  10. }
 

二:wx.request的请求地址带上参数时候会发生错误,无法正常请求(目前未了解到是否是哪边的问题):

解决方案:参数一律放在data内

 

三:bindtap 多次点击,可以打开N个窗口

分享者:月老,原文地址  目前在华为手机上出现,其他机型没测试

 

				
  1. <view class="toufang row" bindtap="{{setTask}}" data-href="taskSet/taskRewen/index">view>
 

				
  1. bindViewTap: function(event) {
  2.  
  3. var accountId=app.getAccountId();
  4. if(!accountId){
  5. app.getUserInfo(function(userInfo){})
  6. }
  7. var url=event.currentTarget.dataset.href;
  8. wx.navigateTo({
  9. url: "../"+url
  10. })
  11. }

快速的多次点击就会出现打开多过窗口。(第一次加载的页面没有这种情况,是在内页出现)。建议修复或给出解决方案。谢谢  问题已经解决,自己琢磨了一下,可以根据timeStamp的时间差来设置  1、在app.js定义全局变量 lastTapTime

 

				
  1. globalData:{
  2. lastTapTime : 0
  3. }

2、设置事件的时间差

 

				
  1. var app = getApp();
  2.  
  3. bindViewTap: function(event) {
  4. var url=e.currentTarget.dataset.href;
  5. var time=e.timeStamp;
  6. //设置无效点击,根据自己的需求设置,这里navigateTo切换页面到动画结束需要的时间为500毫秒左右
  7. if(time - app.globalData.lastTapTime < 500 && app.globalData.lastTapTime != 0){
  8. app.globalData.lastTapTime = time;//这里一定更新无效点击的时间
  9. return;
  10. }
  11. //更新有效点击的时间
  12. app.globalData.lastTapTime = time;
  13. wx.navigateTo({
  14. url:url
  15. })
  16. }

大家可以尝试封装成方法,调用即可。



易优小程序(企业版)+灵活api+前后代码开源 码云仓库:starfork
本文地址:https://www.eyoucms.com/wxmini/doc/course/23437.html 复制链接 如需定制请联系易优客服咨询:800182392 点击咨询
QQ在线咨询