分享者: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
})
}
大家可以尝试封装成方法,调用即可。