解决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>
相关推荐
丷丩1 小时前
MapLibre GL JS第47课:添加动画图标
javascript·gis·动画·mapbox·maplibre
独泪了无痕1 小时前
Vue3中防御XSS攻击的“特效药”-DOMPurify
前端·vue.js·安全
小小19921 小时前
idea 配置less转化为css
前端·css·less
hhb_6181 小时前
Less嵌套避坑:优先级冲突实战解析
前端·css·less
快乐的哈士奇1 小时前
【Next.js实战①】Gmail API 按柜号检索邮件:OAuth 双 Cookie 与搜索 Fallback
开发语言·javascript·ecmascript
云水一下2 小时前
Vue.js从零到精通系列(五):全局状态管理——Pinia 核心与实践
前端·javascript·vue.js
我不是外星人2 小时前
浅谈我对 AI 发展的看法
前端·ai编程·claude
kmblack12 小时前
javascript计算年龄
开发语言·javascript·ecmascript
老马聊技术2 小时前
AI对话功能之SpringBoot整合Vue3
vue.js·人工智能·spring boot·后端
甲维斯2 小时前
测一波Kimi K2.7,消耗一周配额!
前端·人工智能·游戏开发