Element-UI 在表单通过按钮动态增加Tree树形控件

文章目录

  • 问题背景
  • 动态增加的Tree控件
    • 创建el-tree控件数据
    • 动态增加的el-tree控件
    • 编辑数据前需进行设置勾选状态
    • 新增/编辑请求前需转换格式


问题背景

在表单中动态增加的Tree控件中,注册一个 ref 引用,报错如下:

this.$refs[‘showRegionsTree’] is not a function

在调用Tree控件的 setCheckedKeysgetCheckedKeys,分别报错如下:

Cannot read property ‘setCheckedKeys’ of undefined"
Cannot read property ‘getCheckedKeys’ of undefined"

动态增加的Tree控件

表单中动态增加控件可参考文章,通过按钮增加Tree控件大同小异:

Element-UI 实现动态增加多个输入框并校验

动态增加的Tree控件如图:

在这里插入图片描述

先看实现核心代码吧!

创建el-tree控件数据

data() {return {// tree数据showRegions: {data: [],props: { children: 'children', label: 'name' },selectedIds: []}}
},created() {// 请求并填充数据loadRegionData().then(res => {this.showRegions.data = [{ id: 0, name: '展示地区', children: res }]})
},

动态增加的el-tree控件

<el-card class="box-card" shadow="never"><el-scrollbar style="height:300px; width: 300px;"><el-tree ref="showRegionsTree" :data="showRegions.data" :default-checked-keys="showRegions.selectedIds" :props="showRegions.props" accordion show-checkbox node-key="id" /></el-scrollbar>
</el-card>

编辑数据前需进行设置勾选状态

报错:

this.$refs[‘showRegionsTree’] is not a function

这个错误是因为你的dom元素还没有加载完,你就想使用 setCheckedKeys 设置目前勾选的节点。也就是你写的this.$refs.tree.setCheckedKeys(list); 这个里面的 tree 还没有加载出来。

解决方案:

this.$nextTick(() => {// 执行
});

(1)Vue.nextTick([callback, context])

用法:在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。

(2)vm.$nextTick([callback])

用法:将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它,然后等待 DOM 更新。它跟全局方法 Vue.nextTick 一样,不同的是回调的 this 自动绑定到调用它的实例上。

报错:

Cannot read property ‘setCheckedKeys’ of undefined"

这个错误是因为调用不到 setCheckedKeys 方法

可以看到以下代码,获取ref引用调用 getCheckedKeys 时,并不是 this.$refs['showRegionsTree'],而是 this.$refs['showRegionsTree'][0]

const ids = regions.split('|').filter(item => item.length > 0).map(item => parseInt(item))
if (this.$refs['showRegionsTree']) {this.$nextTick(() => {this.$refs['showRegionsTree'][0].setCheckedKeys(ids)})
} else {this.showRegions.selectedIds = ids
}

新增/编辑请求前需转换格式

报错:

Cannot read property ‘getCheckedKeys’ of undefined"

这个错误是因为调用不到 getCheckedKeys 方法

次处同样如此,在获取ref引用调用 getCheckedKeys 时,并不是 this.$refs['showRegionsTree'],而是 this.$refs['showRegionsTree'][0]

if (this.$refs['showRegionsTree']) {const ids = this.$refs['showRegionsTree'][0].getCheckedKeys()this.form.content[i].val = ids ? `|${ids.join('|')}|` : ''
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/17990.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring AOP中pointcut表达式详解

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是「奇点」&#xff0c;江湖人称 singularity。刚工作几年&#xff0c;想和大家一同进步&#x1f91d;&#x1f91d; 一位上进心十足的【Java ToB端大厂…

Qt中的信号与槽(Signals and Slots)

Qt中的信号与槽&#xff08;Signals and Slots&#xff09;是一种用于对象间通信的机制&#xff0c;常用于处理用户界面事件和数据更新等情况。通过信号与槽&#xff0c;可以实现对象之间的解耦和灵活的交互。 信号&#xff08;Signal&#xff09;是对象发出的事件或通知&…

基于vscode连接到远程服务中debug

本文章主要讲解以下两点的任务 1.在windows的vscode中去debug 本机子系统wsl2中运行的docker容器 该篇文件参考知乎上这篇文章 vscode远程连接到本机 wsl2子系统 中正在运行的 docker容器&#xff0c;该docker中有一个flask实例&#xff0c;通过vscode远程debug它 1.1安装v…

Modbus tcp转ETHERCAT在Modbus软件中的配置方法

Modbus tcp和ETHERCAT是两种不同的协议&#xff0c;这给工业生产带来了很大的麻烦&#xff0c;因为这两种设备之间无法通讯。但是&#xff0c;远创智控YC-ECT-TCP网关的出现&#xff0c;却为这个难题提供了解决方案。 YC-ECT-TCP网关能够连接到Modbus tcp总线和ETHERCAT总线中…

Kubernetes —Pod 和容器日志

日志架构 应用日志可以让你了解应用内部的运行状况。日志对调试问题和监控集群活动非常有用。 大部分现代化应用都有某种日志记录机制。同样地&#xff0c;容器引擎也被设计成支持日志记录。 针对容器化应用&#xff0c;最简单且最广泛采用的日志记录方式就是写入标准输出和标…

容器【双例集合、TreeMap容器的使用、 Iterator接口、Collections工具类】(四)-全面详解(学习总结---从入门到深化)

目录 通过元素自身实现比较规则 通过比较器实现比较规则 双例集合 TreeMap容器的使用 Iterator接口 Collections工具类 通过元素自身实现比较规则 在元素自身实现比较规则时&#xff0c;需要实现Comparable接口中的 compareTo方法&#xff0c;该方法中用来定义比较规则。T…

【IoT物联网】IoT小程序在展示中央空调采集数据和实时运行状态上的应用

利用前端语言实现跨平台应用开发似乎是大势所趋&#xff0c;跨平台并不是一个新的概念&#xff0c;“一次编译、到处运行”是老牌服务端跨平台语言Java的一个基本特性。随着时代的发展&#xff0c;无论是后端开发语言还是前端开发语言&#xff0c;一切都在朝着减少工作量&#…

MySQL库表操作的作业

1.创建数据库 create database Market&#xff1b; mysql> show databases; -------------------- | Database | -------------------- | information_schema | | Market | | db1 | | mysql | | performance_schema | | …

如何用一部手机进行人体全身三维扫描

人体建模的应用真的是涵盖到了我们生活中的方方面面&#xff0c;真人潮玩、服饰定制、医疗康复、3D数字人等等领域&#xff0c;都离不开人体建模。 提到给人体建模&#xff0c;大家脑海里第一个浮现的画面&#xff0c;大多会是坐在电脑屏幕前&#xff0c;打开某个熟悉的建模的…

制作搭建宠物商城小程序,打造便捷的宠物购物体验

随着汽车行业的快速发展&#xff0c;越来越多的消费者开始关注汽车零配件的购买。为了提供更好的购物体验和便利&#xff0c;许多汽配商城开始关注并制作汽配商城小程序。那么&#xff0c;什么是汽配商城小程序&#xff1f;它又有哪些好处呢&#xff1f;本文将为您简单介绍汽配…

Transformer网络学习记录——基于空间约束自注意力和Transformer的RGB-D显著性检测方法研究

基于图半监督学习和图卷积的目标分割与跟踪算法研究 (wanfangdata.com.cn) 只能说看不懂&#xff0c;记录是为了有耐心慢消化 原文&#xff1a; 网络整体为通用的编码器-解码器架构 &#xff0c;总体上由骨干编码器、交互编码器、RGB 解码器、深度解码器组成。 具体来说&#…

操作系统接口 MIT 6.828 - 1. Lab 01: Xv6 and Unix utilities

本文会将lab1中的思路以及知识点进行分析&#xff0c;并作为作者学习MIT 6.828的一个学习总结&#xff0c;希望能够帮助到学习该lab的同学们 中文版书籍&#xff1a;中文版书籍 实验教案地址&#xff1a;教案地址 操作系统接口 在操作系统中&#xff0c;为了能够有效地与操作系…