1. 程式人生 > >小程式中 radio 的一個坑,到底 checked 該賦什麼值?

小程式中 radio 的一個坑,到底 checked 該賦什麼值?

首先看官方給出的程式碼,wxml:

<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>

js

Page({
  data: {
    items: [
      {name: 'USA', value: '美國'},
      {name: 'CHN', value: '中國', checked: 'true'},
      {name: 'BRA', value: '巴西'},
      {name: 'JPN', value: '日本'},
      {name: 'ENG', value: '英國'},
      {name: 'TUR', value: '法國'},
    ]
  },
  radioChange: function(e) {
    console.log('radio發生change事件,攜帶value值為:', e.detail.value)
  }
})

似乎很清楚,選中的選項,設定為 checked=“true”。我很輕易的認為,沒有選中的,那就設定為 checked=“false”, 錯了!這樣寫同樣是選中效果!

實際上,就算這樣寫:checked=“abc”, 仍然是選中效果!因此,只有設定checked為空的元素,才是未選中的。

結論:為了設定未選中項的checked值,有兩種方法可供選擇:

  • 設定為空字串 checked="{{item.val}}", item.val 為空字串
  • 在 js 中刪掉變數 delete arr[i][‘val’]