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

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

目录

问题现象

问题排查

解决方案


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

问题现象

树结构重置失效

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

问题排查

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

解决方案

重置时给avue-input-tree的dic也重新赋值。

代码如下:

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>
相关推荐
小蒜学长12 分钟前
基于SSM+VUE的电影售票平台的设计与实现(代码+数据库+LW)
java·vue.js·spring boot·后端·ssm框架·电影售票平台
ss27314 分钟前
AI全栈实战 | 3.5-01 Python 全栈前端最小集:不会 React 也能做出能看的后台,关键就一条线
前端·python·react.js
人工智能培训17 分钟前
数字孪生驱动大模型工业知识库:为具身机器人植入领域专业经验
大数据·linux·服务器·前端·人工智能
维克兜率天31 分钟前
【维克】通道突破:画出趋势的“轨道线“
前端·数据库·人工智能
Ai-_Man32 分钟前
从聊天框到正式文档:AI导出鸭瞄准AI大模型应用的“最后一公里”
开发语言·前端·javascript·人工智能·小程序
Q264336502338 分钟前
【有源码】基于Spring Boot+Vue的骑行爱好者平台的设计与实现-计算机毕设选题推荐
java·vue.js·spring boot·毕业设计·课程设计·数据可视化·源代码
乌暮40 分钟前
拆解网页的底层逻辑:用费曼学习法讲透 HTML 与 CSS
前端·css·学习·html
FYKJ_201042 分钟前
SpringSecurity教室智能预约系统73972-计算机课程设计、毕业设计
java·vue.js·spring boot·python·mysql·spring·django
专业程序开发源43 分钟前
springboot酒店会员点餐系统22339-计算机课程设计、毕业设计
java·javascript·vue.js·spring boot·后端·php·课程设计
FYKJ_20101 小时前
springboot游泳馆管理系统79222-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·mysql·django·课程设计