一:当一个元素上同时绑定了bindtap与bindlongtap的时候触发bindlongtap同时依然会触发bindtap
分享者:bug_zero,原文地址
解决方案:
由于目前在微信小程序上bindlongtap被放置在bindtap后面触发,同时bindtap触发时间为touchend,则我们可以额外自定义一个函数用来判断触发的是tap还是longtap代码如下(在需要处理的页面page内定义):
-
//touchstart时候触发
-
setTapStartTime : function () {
-
this.setData({
-
startTime : Date.now()
-
})
-
},
-
//tap或者longtap时候触发时判断
-
isTap : function () {
-
return Date.now() - this.data.startTime < 200;
-
}
二:wx.request的请求地址带上参数时候会发生错误,无法正常请求(目前未了解到是否是哪边的问题):
解决方案:参数一律放在data内
三:bindtap 多次点击,可以打开N个窗口
分享者:月老,原文地址 目前在华为手机上出现,其他机型没测试
-
<view class="toufang row" bindtap="{{setTask}}" data-href="taskSet/taskRewen/index">view>
-
bindViewTap: function(event) {
-
-
var accountId=app.getAccountId();
-
if(!accountId){
-
app.getUserInfo(function(userInfo){})
-
}
-
var url=event.currentTarget.dataset.href;
-
wx.navigateTo({
-
url: "../"+url
-
})
-
}
快速的多次点击就会出现打开多过窗口。(第一次加载的页面没有这种情况,是在内页出现)。建议修复或给出解决方案。谢谢 问题已经解决,自己琢磨了一下,可以根据timeStamp的时间差来设置 1、在app.js定义全局变量 lastTapTime
-
globalData:{
-
lastTapTime : 0
-
}
2、设置事件的时间差
-
var app = getApp();
-
-
bindViewTap: function(event) {
-
var url=e.currentTarget.dataset.href;
-
var time=e.timeStamp;
-
//设置无效点击,根据自己的需求设置,这里navigateTo切换页面到动画结束需要的时间为500毫秒左右
-
if(time - app.globalData.lastTapTime < 500 && app.globalData.lastTapTime != 0){
-
app.globalData.lastTapTime = time;//这里一定更新无效点击的时间
-
return;
-
}
-
//更新有效点击的时间
-
app.globalData.lastTapTime = time;
-
wx.navigateTo({
-
url:url
-
})
-
}
大家可以尝试封装成方法,调用即可。
|