小程序中的radio----单项选择时的小坑

首先看下官方文档

<radio-group class="radio-group" bindchange="radioChange">
  <label class="radio" wx:for="{{items}}">
    <radio value="{{item.name}}" checked="{{item.checked}}" />
    {{item.value}}
  </label>
</radio-group>
Page({
  data: {
    items: [
      {name: 'USA', value: '美国'},
      {name: 'CHN', value: '中国', checked: 'true'},
      {name: 'BRA', value: '巴西'},
      {name: 'JPN', value: '日本'},
      {name: 'ENG', value: '英国'},
      {name: 'TUR', value: '法国'},
    ]
  },
  radioChange(e) {
    console.log('radio发生change事件,携带value值为:', e.detail.value)
  }
})

效果:
在这里插入图片描述
以上是官方给的demo,如果自己所表现的效果跟上面一样,那不需要任何改动;下面列述
在这里插入图片描述
这个效果的实现。

  1. radio 中的icon大小设置
    加入transform:scale(0.9);------1为最大,0最小
  2. 单条目checked=""的赋值
    如果直接命名false或者true,状态就不会被切换了;需要变化的话,可以在js中,添加变量isSelect:true,checked="{{isSelect}}"
  3. 单条目选择,被选中后状态不切换
    radio在获取点击事件后,会先传到radio-group,由radio-group分配点击事件给被选择的radio,单条目时,一直被选中所以就不会进行状态切换。此时只需要catchtap="radioChange"阻止事件冒泡。

完整代码:

  <label class="radio" catchtap="radioChange">
    <radio  color='#deab8a' checked="{{isSelect}}" />
    <text class='desc'>设置为默认地址</text>
  </label>
 radioChange: function (e) {
    var ss = this.data.isSelect;
    console.log(ss)
    this.setData({
      isSelect:ss?false:true         //刷新状态
    })
    
  },
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值