需求背景
小程序项目内,需要添加一个checkbox,用来判断用户是否同意某种协议。
遇到的坑
我只打算使用一个checkbox,而非checkbox-group,最初给checkbox添加bindchange属性,却无任何反应。通过查看官网才知晓,checkbox只有bindtap,我又将bindtap函数里的事件参数打印出来,却发现没有一个字段能表示是否勾选。
官网上说checkbox添加checked属性值,我按照如下方式加了:
js
<checkbox checked="{{ isChecked }}" />
Page({
data: {
isChecked: false,
},
})
checkbox已经勾选了,isChecked的值却仍然是false,很明显,它不是响应式的。
万般无奈的解决办法
无奈之下,我只能使用checkbox-group,给它绑定bindchange事件,代码如下所示:
js
<checkbox-group bindchange="handleChange">
<checkbox value="{{ isChecked }}" />
</checkbox-group>
Page({
data: {
isChecked: false,
},
handleChange(e) {
this.setData({
isChecked: Boolean(e.detail.value[0]),
});
},
})
这种感觉,有点尴尬,就像你本来只准备用一把普通刀杀鸡,结果呢,别人非得让你用牛刀来杀,好生别扭!