最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

微信小程序BindTap快速連續(xù)點(diǎn)擊目標(biāo)頁(yè)面跳轉(zhuǎn)多次問(wèn)題處理

 更新時(shí)間:2019年04月08日 11:50:52   作者:老馬歷寫(xiě)記  
這篇文章主要介紹了微信小程序BindTap快速連續(xù)點(diǎn)擊目標(biāo)頁(yè)面跳轉(zhuǎn)多次問(wèn)題處理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

問(wèn)題描述:

1)wxml片段

<view bindtap="loadMulti">
  <text>連續(xù)點(diǎn)擊,加載多次</text>
</view>
<view bindtap="loadOnce">
  <text>連續(xù)點(diǎn)擊,加載一次</text>
</view>

2)js代碼片段

loadMulti:function(e) {
  wx.navigateTo({
    url: '/pages/loadMulti/index',
  })
},

3)快速,連續(xù)點(diǎn)擊“連續(xù)點(diǎn)擊,加載多次”文本串時(shí),我們會(huì)發(fā)現(xiàn),目標(biāo)頁(yè)面loadMulti/index頁(yè)面被加載了N次,需要點(diǎn)擊N次返回,才可以返回到主頁(yè)面。

問(wèn)題原因剖析:

小程序基于MINA框架,該框架的核心框架的核心是一個(gè)響應(yīng)的數(shù)據(jù)綁定系統(tǒng),整個(gè)系統(tǒng)分為兩塊視圖層(View)和邏輯層(App Service),框架可以讓數(shù)據(jù)與視圖非常簡(jiǎn)單地保持同步。當(dāng)做數(shù)據(jù)修改的時(shí)候,只需要在邏輯層修改數(shù)據(jù),視圖層就會(huì)做相應(yīng)的更新;當(dāng)點(diǎn)擊按鈕的時(shí)候,視圖層會(huì)發(fā)送 bindtap的事件給邏輯層,邏輯層找到對(duì)應(yīng)的事件處理函數(shù)loadMulti執(zhí)行。

由于視圖層發(fā)送bindtap事件給邏輯層并找到對(duì)應(yīng)的處理函數(shù)需要時(shí)間T1,找到對(duì)應(yīng)的處理函數(shù)loadMulti后,執(zhí)行l(wèi)oadMulti函數(shù):wx.navigateTo, hide 原頁(yè)面,需要時(shí)間T2,如果在T1+T2時(shí)間內(nèi),快速連續(xù)點(diǎn)擊N次,完全可以加載顯示N次目標(biāo)頁(yè)面。

解決方案:

 loadOnce:function(e) {
  if (!this.pageLoading) {
   this.pageLoading = !0;
   wx.navigateTo({
    url: '/pages/loadOnce/index',
   })
  }
 },
 onShow: function() {
  this.pageLoading = !1;
}

1)loadOnce事件處理函數(shù)中,設(shè)置pageLoading = true

2)頁(yè)面的onShow事件中,設(shè)置pageLoading = false

其實(shí)我們可以封裝成方法:

/**

*解決連續(xù)點(diǎn)擊多次沖出觸發(fā)事件

*/

function throttle(fn, gapTime) {

  if (gapTime == null || gapTime == undefined) {

    gapTime = 1500

  }

  let _lastTime = null

  // 返回新的函數(shù)

  return function () {

    let _nowTime = + new Date()

    if (_nowTime - _lastTime > gapTime || !_lastTime) {

      fn.apply(this, arguments)  //將this和參數(shù)傳給原函數(shù)

      _lastTime = _nowTime

    }

  }

} 
<button bindtap='tap' data-key='abc'>tap</button> 

const util = require('../../utils/util.js')

Page({

  data: {

    text: 'tomfriwel'

  },

  onLoad: function (options) {

  },

  tap: util.throttle(function (e) {

    console.log(this)

    console.log(e)

    console.log((new Date()).getSeconds())

  }, 1000)

})

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

青田县| 枞阳县| 沐川县| 长泰县| 湖北省| 新绛县| 瑞金市| 广平县| 成都市| 彰化县| 襄城县| 林周县| 开江县| 舞钢市| 清流县| 武定县| 新宾| 桐庐县| 理塘县| 阿克陶县| 花垣县| 东乡| 邢台县| 宣化县| 修武县| 宿州市| 高雄县| 彰化县| 合作市| 日土县| 曲沃县| 五指山市| 江西省| 全州县| 卓资县| 乐至县| 台中市| 泰和县| 理塘县| 罗定市| 温宿县|