用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

微客吧 首页 教程 微信小程序 新手教程 查看内容

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

纸飞机 2018-3-8 09:36

一:当一个元素上同时绑定了bindtap与bindlongtap的时候触发bindlongtap同时依然会触发bindtap分享者:bug_zero,原文地址 解决方案: 由于目前在微信上bindlongtap被放置在bindtap后面触发,同时bindtap触发时间为t ...

一:当一个元素上同时绑定了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. class="toufang row" bindtap="{{setTask}}" data-href="taskSet/taskRewen/index">view>
  1. bindViewTap: function(event) {
  2. var accountId=app.getAccountId();
  3. if(!accountId){
  4. app.getUserInfo(function(userInfo){})
  5. }
  6. var url=event.currentTarget.dataset.href;
  7. wx.navigateTo({
  8. url: "../"+url
  9. })
  10. }

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

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

2、设置事件的时间差

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

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

鲜花
鲜花
握手
握手
雷人
雷人
路过
路过
鸡蛋
鸡蛋
分享至 : QQ空间
收藏