【小程序】Vant-Weapp Radio单选框组件无法触发bind:Change事件

13 篇文章 0 订阅
11 篇文章 0 订阅

基础库: 2.24.4
vant-weapp: 1.10.3


今天在用vant的时候发现一个bug:
与 Cell 组件一起使用时,点击Cell时能触发Click事件,但不能触发Change事件;仅在点击图标时能同时触发Click和Change事件,代码如下

<van-radio-group value="{{ radio }}" bind:change="onChange">
  <van-cell-group>
    <van-cell title="单选框 1" clickable data-name="1" bind:click="onClick">
      <van-radio slot="right-icon" name="1" />
    </van-cell>
    <van-cell title="单选框 2" clickable data-name="2" bind:click="onClick">
      <van-radio slot="right-icon" name="2" />
    </van-cell>
  </van-cell-group>
</van-radio-group>
Page({
  data: {
    radio: '1',
  },

  onChange(event) {
    console.log("onChange")
    this.setData({
      radio: event.detail,
    });
  },

  onClick(event) {
    const { name } = event.currentTarget.dataset;
    console.log("onClick", name)
    this.setData({
      radio: name,
    });
  },
});

在这里插入图片描述
解决办法就是在Click事件处理函数中实现Change事件处理函数, 代码如下
记得不要注册bind:change,不然会重复执行

<van-radio-group value="{{ radio }}">
  <van-cell-group>
    <van-cell title="单选框 1" clickable data-name="1" bind:click="onClick">
      <van-radio slot="right-icon" name="1" />
    </van-cell>
    <van-cell title="单选框 2" clickable data-name="2" bind:click="onClick">
      <van-radio slot="right-icon" name="2" />
    </van-cell>
  </van-cell-group>
</van-radio-group>
Page({
  data: {
    radio: '1',
  },

  onChange(event) {
    console.log("onChange")
    this.setData({
      radio: event.detail,
    });
  },

  onClick(event) {
    const { name } = event.currentTarget.dataset;
    console.log("onClick", name)
    if (name !== this.data.radio) {
      this.onChange(event);
    }
    this.setData({
      radio: name,
    });
  },
});

在这里插入图片描述
参考:https://youzan.github.io/vant-weapp/#/radio

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值