小程式中 radio 的一個坑,到底 checked 該賦什麼值?
阿新 • • 發佈:2019-01-22
首先看官方給出的程式碼,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’]