1***@qq.com
1***@qq.com
  • 发布:2023-06-09 16:08
  • 更新:2023-06-09 16:08
  • 阅读:215

【报Bug】记录一个checkbox的bug,困扰一天了。

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 3.8.4

手机系统: Android

手机系统版本号: Android 10

手机厂商: 华为

手机机型: 小米

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

css层
<checkbox-group @change="checkboxChange">
<view v-for="(item,index) in records" :key="index">

                        <<checkbox  :value="String(item.id)" :checked="Boolean(item.checked)" />  
             </view>  

</checkbox-group>

js层
//佐证记录选择
checkboxChange: function(e) {
console.log(e.detail.value)
var that = this,
records = that.records,
sureRecord = that.sureRecord,
values = e.detail.value,
sureRecord2 = sureRecord
for (var i = 0; i < records.length; ++i) {
records[i].checked = false;
for (var j = 0; j < values.length; ++j) {
if (records[i].id == values[j]) {
records[i].checked = true;
}
}
//判断是否勾选中
if (records[i].checked) {
//保存到确定列表
let isSure = false;
for (var k = 0; k < sureRecord.length; ++k) {
if (records[i].id == sureRecord[k].id) {
isSure = true;
}
}
if (!isSure) {
sureRecord.push(records[i]);
that.records=records
that.sureRecord=sureRecord

                 }  
               } else {  
                 //从确定列表删除  
                 for (var k = 0; k < sureRecord.length; ++k) {  
                   if (records[i].id == sureRecord[k].id) {  
                     sureRecord2.splice(k, 1);  
                     that.records=records  
                     that.sureRecord=sureRecord2  

                   }  
                 }  
               }  
             }  
           },  

操作步骤:

当时的步骤是删除数组的里面的第一个元素,但是第二个元素的value值虽然是true,但是在checkbox渲染的过程中,并没有变成勾的形式,说明当时并没有渲染到位。

预期结果:

当删除数组的第一个元素的时候,第二个元素应该是带勾的。

实际结果:

不带勾,依然是空白,即使value的值是true,但是显示出来为空白。

bug描述:

折磨一天了的bug,这个bug是checkbox渲染不及时导致,当我吧checkbox里面的 :checked="Boolean(item.checked)" checked变成true的时候,该节点并没有及时刷新成勾,不知道是不是系统里面设置了v-if导致渲染不及时。

2023-06-09 16:08 负责人:无 分享
已邀请:

要回复问题请先登录注册