🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# checkbox取消选中不好使 直接说结论:u-checkbox-group的v-model和checkbox的checked属性是互相冲突的,两个只能选择一个,如果都选上了就会出现这个bug,复现问题的代码如下: ```vue <template> <u-checkbox-group v-model="checkboxValue2" // 关键部分,给checkbox-group绑定v-model placement="column" @change="checkboxChange" shape="square" > <u-checkbox :customStyle="{marginBottom: '8px'}" v-for="(item, index) in checkboxList2" :key="index" :label="item.name" :name="item.name" :checked="true" // 关键部分,给子组件指定checked属性 > </u-checkbox> </u-checkbox-group> </template> <script> export default { data() { return { checkboxList2: [{ name: '西游记', disabled: false }, { name: '红楼梦', disabled: false }, { name: '三国演义', disabled: false }, { name: '水浒传', disabled: false } ], // u-checkbox-group的v-model绑定的值如果设置为某个checkbox的name,就会被默认选中 checkboxValue2: ['西游记', '红楼梦', '三国演义', '水浒传'], } } } </script> ``` 此时就会发现怎么取消也取消不了。 ## 问题原理 在checkbox-group里的value变化的时候会重新调用一遍子组件的init方法,init方法会检查checked来确定自己的选中状态,所以其实是取消成功了的,但是它又以很快的速度给你勾选上了,人眼看不出来就会认为是取消不动。 ## 解决方案 两个属性不要一起设置就好了。 > 本文作者: 不爱喝橙子汁