<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,如果自己所表现的效果跟上面一样,那不需要任何改动;下面列述
这个效果的实现。
- radio 中的icon大小设置
加入transform:scale(0.9);
------1为最大,0最小 - 单条目checked=""的赋值
如果直接命名false或者true,状态就不会被切换了;需要变化的话,可以在js中,添加变量isSelect:true,checked="{{isSelect}}"
- 单条目选择,被选中后状态不切换
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 //刷新状态
})
},