收藏
回答

“快速的多次”点击bindtap事件方法会重复执行多次,希望下版也能修复。

问题模块
API和组件

公司名称

上海秉钧网络科技股份有限公司

MP帐号(邮箱)

xub@bingjun.cn

开发者微信号

iwapzone

机型(如iPhone 6s plus)

任意机型

操作系统(如iOS 9.3)


是否必现


出现时间


操作路径(即如何操作可以复现该问题)

快速的多次点击绑定了bindtap事件处如官方开发的“自选股”小程序,在首页的搜索框快速点击(要快一点),就会发现打开多个页面。

问题描述(具体问题介绍)

快速的多次点击会执行多次。建议修复我这里虽解决了,但是由于bindtap是经常用到的,会造成太多的不必要的代码,建议官方给出修改

//在APP.js定义检查的变量和方法

var lastTapTime=0
validEvent:function(e,timeStep){//有效事件的判断
      if(!e || e.timeStamp){
        return true;
      }
      var _this=this;
      var time=e.timeStamp;
      //判断是否在当前页面
       
      //设置无效点击,根据自己的需求设置,这里navigateTo切换页面到动画结束需要的时间为500毫秒左右
      if(time - _this.globalData.lastTapTime < 500 && _this.globalData.lastTapTime != 0){
            _this.globalData.lastTapTime = time;//这里一定更新无效点击的时间
            return false;
      }else{
          _this.globalData.lastTapTime = time;
          return true;
      }
  }

//然后在页面的js写上判断

bindViewTap: function(event) {  
   

if(!app.validEvent(e,500)){

      return;

   }

   var url=event.currentTarget.dataset.href;
    wx.navigateTo({
      url: "../"+url
    })
 }

//在页面显示的时候一定要初始化公共时间。因为记录的bindtap的timeStamp是根据单一页面的停留时间来计算的

onShow:function(){
    app.globalData.lastTapTime=0;
}


问题截图(客户端问题界面截图)


代码片段截图

<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
    })
 }









最后一次编辑于  2017-02-14  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏