微信小程序按钮绑定onTap函数的更简单方法

Simpler way to bind onTap functions to buttons in WeChat mini-program

我正在为微信创建一个简单的音频播放应用程序。 在播放屏幕上,它有 5 个控制按钮 - 上一个、快退、play/pause、快进和下一个。 所以我创建了它们并绑定到每个事件监听函数。

<!-- part of play.wxml -->

<view class="button-group">
    <image class="button" src="../../res/img/control_prev.svg" bindtap="onPrev"></image>
    <image class="button" src="../../res/img/control_fback.svg" bindtap="onFBack"></image>
    <image class="button" src="../../res/img/control_play.svg" bindtap="onPlay"></image>
    <image class="button" src="../../res/img/control_ffor.svg" bindtap="onFFor"></image>
    <image class="button" src="../../res/img/control_next.svg" bindtap="onNext"></image>
</view>

play.js,我必须定义所有这 5 个函数。

/* part of play.js */

onPrev: (event) => {
    Player.prev()
},
onFBack: (event) => {
    Player.fback()
},
onPlay: (event) => {
    Player.play()
},
onFFor: (event) => {
    Player.ffor()
},
onNext: (event) => {
    Player.next()
},

我想一定有更好的方法来简化这段重复的代码。 如何将它们作为一个功能并将其绑定到多个按钮?

为其创建一个函数并使用 data-* 属性.

为每个按钮传递一个 id

例如,

<image class="button" src="../../res/img/control_prev.svg" bindtap="onTap" data-id="prev"></image>
<image class="button" src="../../res/img/control_fback.svg" bindtap="onTap" data-id="fback"></image>
...
onTap: (event) => {
    let id = event.currentTarget.dataset.id
    if (id == "prev")
        Player.prev()
    else if (id == "fback")
        Player.fback()
    ...