解决avue-input-tree组件重置数据不回显/重置失败

解决方式:使用JSON.parse(JSON.stringify(value)) 进行赋值,且给 dic 也重新赋值。

目录

问题现象

问题排查

解决方案


最近在使用avue-input-tree组件展示物料数据时,遇到了一个有趣的问题:页面重置操作无法将数据恢复到初始值,而是在初始值基础上追加了修改后的值。经过一番排查,终于找到了问题的根源和解决方法。

问题现象

树结构重置失效

假如:默认选中【888,999】,修改为【test23344,2】,但是点击【重置】后,就成了追加,如图。

问题排查

经过仔细测试和代码排查,我们发现问题出在avue-input-tree组件的dicts属性上。虽然我们在初始化时设置了初始值,但可能在重置操作后,重新渲染组件时,没有正确地对dicts进行重新赋值,导致组件无法感知到数据的变化,从而在重置时出现了错误的追加行为。

解决方案

重置时给avue-input-treedic也重新赋值

代码如下:

javascript 复制代码
methods: {
  handleOnTemplate(tempItem, templateList) {
    console.log(tempItem, '模板tempItem-----');
    if (templateList?.length) {
      this.modelCategory = [];
      this.modelCategory = tempItem?.modelCategorys?.value ? JSON.parse(JSON.stringify(tempItem?.modelCategorys?.value)) : [];
      this.queryParams.modelCategorys = tempItem?.modelCategorys?.value || [];
      this.modelCategorysList = tempItem?.modelCategorys?.options? JSON.parse(JSON.stringify(tempItem?.modelCategorys?.options)) : [];
    }
  },
}

html部分:

html 复制代码
<template slot="form-modelCategorys">
  <avue-input-tree 
    :props="{ label: 'categoryName', value: 'categorysCode' }"
    :dic="modelCategoryList" 
    multiple 
    v-model="modelCategory" 
    placeholder="请选择 物料分类"
  ></avue-input-tree>
</template>
相关推荐
软件开发技术深度爱好者16 小时前
HTML5实现数学函数画图器
前端·javascript·html5
蜡台16 小时前
JS 浏览器 / App WebView 检测工具
开发语言·javascript·ecmascript
牧艺16 小时前
cos-design BubbleField:用 Canvas 做一个「会呼吸」的深海气泡场
前端·webgl·canvas
随风一样自由16 小时前
【前端+登录页】登录页背景性能优化实战:从 722 KB 到 200 KB,LCP 从 2.5s 到 1.2s
前端·性能优化·登录页·ttl·lcp
swipe16 小时前
09|(前端转全栈)商品为什么不能随便上下架?后端状态机思维入门
前端·后端·全栈
taocarts_bidfans16 小时前
Taoify 站点访问地区限制与 IP 管控配置
前端·javascript·tcp/ip·taoify
狂师16 小时前
用自然语言控制手机,一条命令让 AI 帮你操作 Android 和 iOS 设备!
前端·开源·测试
Csvn16 小时前
# 🎨 CSS Container Queries 实战踩坑——从「响应式」到「容器式」
前端
zhangjw3416 小时前
第36篇:Spring Boot进阶:Web开发+参数校验+全局异常处理
前端·spring boot·后端
老王以为16 小时前
解剖 Claude Code:逆向工程视角下的入口架构分析
前端·ai编程·claude