收藏
回答

data-*中的值无法被bindchange中的event.target.dataset事件捕获?

在checkboxgroup中,data-*中的值无法被bindchange中的event.target.dataset事件捕获。

wxml

js


回答关注问题邀请回答
收藏

1 个回答

  • 微盟
    微盟
    2023-07-18

    在微信小程序中,当 checkbox-group 触发 bindchange 事件时,事件的 target 属性指向的是 checkbox-group 本身,而不是内部的 checkbox。因此,你无法通过 event.target.dataset 获取到 checkboxdata-* 属性。

    然而,你可以在 checkbox 上绑定 bindtap 事件,并在这个事件处理函数中通过 event.currentTarget.dataset 获取 data-* 属性。因为在 bindtap 事件中,currentTarget 指向的是触发事件的 checkbox。例如:

    <checkbox-group bindchange="checkboxGroupChange">

    <checkbox value="value1" data-extra="extra1" bindtap="checkboxTap">Option 1</checkbox>

    <checkbox value="value2" data-extra="extra2" bindtap="checkboxTap">Option 2</checkbox>

    </checkbox-group>

    Page({

    checkboxGroupChange: function(e) {

    console.log('checkbox group change, value: ', e.detail.value);

    },

    checkboxTap: function(e) {

    console.log('checkbox tap, data: ', e.currentTarget.dataset);

    }

    });

    请注意,在 checkboxTap 中你只能获取到用户刚刚点击的 checkbox 的数据,而无法获取到整个 checkbox-group 的数据。如果你需要获取整个 checkbox-group 的数据,你可能需要在 checkboxTap 中手动更新和保存这些数据。

    2023-07-18
    有用
    回复 2
    • 聚梦-晨晞
      聚梦-晨晞
      2023-07-19
      不不不,我的意思是在checkbox-group的bindchange中获取事件函数对应的数据data-*,而不是通过子组件内checkbox的bindtap获取对应的事件data-*,我希望返回的值是来自父级组件group中的data-*告诉我是哪一组内的事件发生了change事件,从而做下一步的判定条件触发其他事件。
      2023-07-19
      回复
    • 聚梦-晨晞
      聚梦-晨晞
      2023-07-19
      但是目前checkbox-group内的子组件checkbox即使发生change但是仍不能获取data-*的变化
      2023-07-19
      回复
登录 后发表内容