詳解小程序如何動態(tài)綁定點擊的執(zhí)行方法
需求
一個商城的個人中心頁里,有很多用戶操作按鈕:我的訂單,我的提現,我的送貨等等,每個圖標在點擊的時候,可能是跳轉頁面的,也可能是執(zhí)行當頁方法的。
目前需要寫一個通用的方法來實現這個功能,菜單的數據結構是一樣的。

解決
菜單數據結構
title: 菜單名
iconUrl: 圖標url
type: page - 跳轉頁面 或者 method - 執(zhí)行方法
url: 點擊時跳轉的鏈接或執(zhí)行方法
badge: 圖標上顯示的未讀信息數
// 營銷工具菜單組
menuListSell: [
{id: 0, title: '開團海報', type: 'page', url: '/pages/userCenter/poster/poster' ,iconUrl: '/assets/mine/poster.png', badge: 0},
{id: 1, title: '優(yōu)惠券包', type: 'method', url: 'showDeveloping' ,iconUrl: '/assets/mine/coupon.png', badge: 4},
{id: 2, title: '優(yōu)惠活動', type: 'method', url: 'showDiscountActivity' ,iconUrl: '/assets/mine/gift.png', badge: 0},
],
頁面結構是這樣的
<view class="section-icons">
<view wx:for="{{menuListNormal}}"
wx:key="{{item.id}}"
data-index="{{item.id}}"
data-type="{{item.type}}"
data-url="{{item.url}}"
class="section-icons-item"
bindtap="switchMenu" >
<view class="icon">
<image src="{{item.iconUrl}}" mode="aspectFit"></image>
<view wx:if="{{item.badge > 0}}" class="badge">{{item.badge}}</view>
</view>
<text>{{item.title}}</text>
</view>
</view>
每個圖標菜單在點擊的時候,都會執(zhí)行 switchMenu 這個方法,獲取標簽上的 url、type, 再通過 type 值判斷跳轉頁面還是執(zhí)行方法,如果 type === 'page' 就跳轉鏈接為 url 的頁面,如果 type !== 'page' 就執(zhí)行當頁名為 url 的方法。當然,這個方法需要事先在當前頁面中已經寫好。
重要 主要是如何執(zhí)行名為 url 的方法:因為要執(zhí)行的 url 方法是 this 的一個對象,所以可以直接使用 this['對象字符串']() 來執(zhí)行這個方法, this['對象字符串'] 定位到了這個方法的引用,再加上 () 就可以執(zhí)行這個方法,如下:
// 菜單點擊
switchMenu(e){
// 獲取標簽上的數據
let pageUrl = e.currentTarget.dataset.url;
let type = e.currentTarget.dataset.type;
if (type === 'page'){ // 跳轉頁面時
wx.navigateTo({
url: pageUrl
})
} else { // 調用方法時
this[pageUrl]()
}
},
結果
這位,就可以實現頁面跳轉和方法執(zhí)行了
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
JavaScript實現動態(tài)高度過渡的3種方式總結
這篇文章主要為大家詳細介紹了JavaScript實現動態(tài)高度過渡的3種方式,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2024-01-01
Whatever:hover 無需javascript讓IE支持豐富偽類
絕大部分現代瀏覽器支持 css 中的 :hover 偽類選擇器,可以用于所有 html 元素。2010-06-06
CodeMirror2 IE7/IE8 下面未知運行時錯誤的解決方法
最近用CodeMirror2作后臺的模板編輯器,在IE9、Firefox下面沒有問題。到了IE7、IE8下面,textarea里面的代碼就顯示不出來了。搜索了好多,終于找到原因2012-03-03

