點擊事件是頁面跳轉 當點擊事件是頁面跳轉時,不太適合顯示加載框,但小程序的頁面跳轉並不是很快,如果不作處理又會導致用戶反復點擊打開多個頁面,這里可以使用限制按鈕或控件的點擊間隔的方式處理,同樣可以將這個方法放到公共的代碼里面比如util,然后在使用時直接調用即可。
function buttonClicked(self) { self.setData({
buttonClicked: true
})
setTimeout(function () { self.setData({
buttonClicked: false
})
}, 500)
}
首先需要在頁面對應的js文件里面增加一個buttonClicked數據對象,然后在點擊事件里面調用上述方法。
Page({
data: {
buttonClicked: false
},
click: function (e) {
util.buttonClicked(this); var id = e.currentTarget.dataset.id;
wx.navigateTo({
url: '../detail/detail?id=' + id
})
},
})
另外,在wxml的點擊控件中通過buttonClicked判斷是否可以點擊,可以用bindtap也可以用disabled
<view bindtap="{{!buttonClicked?'click':''}}" data-id="{{id}}" />
<button bindtap="{{!buttonClicked?'click':''}}" data-id="{{id}}" />
<button bindtap="click" disabled="buttonClicked" data-id="{{id}}" />
更新一下
————————————————————————————
關於快速點擊時重復打開頁面的解決方案
可以通過css的pointer-events:none來解決。
在app.wxss增加以下內容:
/*
* 如果添加了hover-class屬性,
* 在點擊時會添加hover-class,並維持400ms后移除
*【注意:對於如果超過400ms仍未跳轉的事件不起作用】
* 給這些hover類增加穿透屬性,可防止重復點擊問題
* 其中xxx-hover為自定義的hover類
*/
.navigator-hover, .xxx-hover {
pointer-events: none; // 點擊事件直接穿透到下層元素,即跳過這個鏈接或者按鈕
}
WXML頁面上例子:
自定義事件:
<view class='field' hover-class='navigator-hover' hover-stay-time='默認400,可自行更改' bindtap='test'></view>
普通鏈接(自帶navigator-hover):
<navigator url='xxx'>鏈接navigator>
PS:在測試的時候發現對於button似乎不太好使。
參考:https://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&token=&docid=000caed01d8ca8fa7c1734f3b51c04
文章來源:劉俊濤的博客
地址:http://www.cnblogs.com/lovebing
歡迎關注,有問題一起學習歡迎留言、評論。
