vue2使用element中多选组件el-checkbox-group,数据与UI更新不同步

问题描述

使用element多选checkbox组件,点击勾选取消勾选,视图未变化,再次点击表单其他元素,多选组件勾选状态发生变化,视图和数据未同步

  • 第一次尝试:再el-checkbox-group多选父组件上增加点击事件,但是每次勾选并未触发,而是点表单其他元素之后才会触发当前事件。
  • 第二次尝试:使用vue. set
js 复制代码
this.$set(this.storeItem,   'array',  list)

这样修改后确实也起作用了。 
🍔 注意:这里使用 vue.set 起作用根本是,瞎猫碰上死耗子,不能响应的原因根本不是这个

这里我们根本没有添加 array属性,而只是去改变了array 属性的值,vue按理说应该是能够检测到的。
  • 最后解决方法:el-checkbox-group与el-check的数据同步有些问题
    给每个el-checkbox增加一个属性checked和一个事件change
js 复制代码
<el-checkbox-group v-model="dutyForm.hazardFactorsIds" >
  <el-checkbox
    v-for="item in hazardFactorsList"
    :key="item.ID"
    :label="item.ID"
    :checked="checked"
    @change="checked=!checked"
  >{{ item.Name }}</el-checkbox>
</el-checkbox-group>

--------js-数据层-----
 hazardFactorsList: [
  {
    ID: 'FK1',
    Name: '窒息(缺氧)'
  },
  {
    ID: 'FK2',
    Name: '中毒'
  },
  {
    ID: 'FK3',
    Name: '燃爆/爆炸'
  },
  {
    ID: 'FK4',
    Name: '机械伤害'
  },
  {
    ID: 'FK5',
    Name: '淹溺'
  }
],
checked: false // 这个 checked 没有任何作用,只是为了绕开elment 的这个坑
再每次修改<el-checkbox-group>的 v-model 的值的时候,先将 checked 设置为 false

vue2经常会出现视图和数据不同步的问题,尽量少使用vue.set方式,多操作状态的改变来影响视图

直接复制代码,可以看见视图和数据现在保持一致了

相关推荐
军军君0131 分钟前
Three.js基础功能学习十三:太阳系实例上
前端·javascript·vue.js·学习·3d·前端框架·three
xiaoqi9221 小时前
React Native鸿蒙跨平台如何实现分类页面组件通过searchQuery状态变量管理搜索输入,实现了分类的实时过滤功能
javascript·react native·react.js·ecmascript·harmonyos
qq_177767372 小时前
React Native鸿蒙跨平台实现应用介绍页,实现了应用信息卡片展示、特色功能网格布局、权限/联系信息陈列、评分展示、模态框详情交互等通用场景
javascript·react native·react.js·ecmascript·交互·harmonyos
2603_949462102 小时前
Flutter for OpenHarmony社团管理App实战:预算管理实现
android·javascript·flutter
wuhen_n2 小时前
JavaScript内存管理与执行上下文
前端·javascript
Hi_kenyon2 小时前
理解vue中的ref
前端·javascript·vue.js
jin1233223 小时前
基于React Native鸿蒙跨平台地址管理是许多电商、外卖、物流等应用的重要功能模块,实现了地址的添加、编辑、删除和设置默认等功能
javascript·react native·react.js·ecmascript·harmonyos
2501_920931704 小时前
React Native鸿蒙跨平台医疗健康类的血压记录,包括收缩压、舒张压、心率、日期、时间、备注和状态
javascript·react native·react.js·ecmascript·harmonyos
橙露5 小时前
React Hooks 深度解析:从基础使用到自定义 Hooks 的封装技巧
javascript·react.js·ecmascript
2501_920931705 小时前
React Native鸿蒙跨平台使用useState管理健康记录和过滤状态,支持多种健康数据类型(血压、体重等)并实现按类型过滤功能
javascript·react native·react.js·ecmascript·harmonyos