需求背景
小程序项目内,需要添加一个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]),
});
},
})
这种感觉,有点尴尬,就像你本来只准备用一把普通刀杀鸡,结果呢,别人非得让你用牛刀来杀,好生别扭!