原理:通過checkChange來監(jiān)聽所有checkbox的變化,監(jiān)聽函數(shù)通過e.dtail.value得到一個(gè)被選中的數(shù)組,通過選中數(shù)組checkArr[],來給原先的數(shù)據(jù)數(shù)組items[]的被選中對象的check屬性置true,沒有被選中的置false,在我們的wxml中,通過判斷每個(gè)對象的checked屬性來給他一個(gè)”is_checked”的class。
wxml
<checkbox-group class='free-radios' bindchange="checkChange">
<label bindtap="click" wx:for="{{items}}" wx:key="{{items}}" class="free-radio {{item.checked?'is_checked':''}}">
<checkbox value="{{item.name}}" name="{{item.value}}" checked="{{item.checked}}" hidden='true'></checkbox>
<label class="free-text">{{item.value}}</label>
</label>
</checkbox-group>
js
data: {
showDialog: false,
showDialogRight:false,
items: [
{ name: '0', value: '中國', checked: false,},
{ name: '1', value: '美國', checked: false,},
{ name: '2', value: '巴西', checked: false,},
{ name: '3', value: '日本', checked: false,},
{ name: '4', value: '英國', checked: false,},
{ name: '5', value: '法國', checked: false,},
{ name: '6', value: '韓國', checked: false,},
{ name: '7', value: '俄羅斯', checked: false,},],
},
checkChange: function (e) {
console.log('radio發(fā)生change事件,攜帶value值為:', e)
var that = this
that.setData({
value: e.detail.value
})
var items = this.data.items;
var checkArr = e.detail.value;
for (var i = 0; i < items.length; i++) {
if (checkArr.indexOf(i + "") != -1) {
items[i].checked = true;
} else {
items[i].checked = false;
}
}
this.setData({
items: items
})
},
原文來自:http://blog.csdn.net/Wu_shuxuan/article/details/78491953?locationNum=3&fps=1