el-tree树节点新增、编辑、删除后局部刷新树

本文介绍了在Vue.js和Element UI项目中,如何实现el-tree组件的节点新增、删除和编辑操作,并讨论了局部刷新树的方法,包括使用updateKeyChildren、remove和load等API,以及在编辑节点时的注意事项。

前言

场景:左侧为树,右侧为树的增删改配置,右侧增删改操作之后想要实现左侧树节点的局部刷新,保证用户的体验效果。 (u‿ฺu✿ฺ)


一、新增节点

el-tree的updateKeyChildren(key, data) 方法,通过 keys 设置节点子元素。1. 节点 key 2. 增加的子元素数组(这个新增的数据最好由后端在新增接口返回,前端直接新增的话节点没有对应生成的id)

let { updateKeyChildren } = this.$refs.Tree
updateKeyChildren(key, '增加的子元素数组');

二、删除节点

获取需要删除的节点数据集合,遍历,通过el-tree的remove(data),删除对应的子元素;

如果只能获取到节点keys集合,可以用过getNode(key)方法获取node,再通过remove(node),删除对应的子元素。

let { remove } = this.$refs.Tree
let dataArr = '需要删除的节点数据集合'
dataArr.forEach((item: any) => {
  remove(item)
})
let keyArr = '需要删除的节点key集合'
keyArr.forEach((item: Number) => {
  remove(getNode(item))
})

三、编辑节点

编辑节点采用先删除对应节点,再新增修改后的节点,太麻烦了

四、其余方式

直接更新父节点---使用后发现有bug,不用让后端帮忙返回数据。

el-tree的load(node, resolve)方法,node为需要重新加载的节点,resolve函数是用来渲染树组件,resolve参数需要存储一下,resolve参数可能不对应,节点重新渲染会渲染成上一个点击的节点

let node = '需要更新的节点node'
this.treeLoad(node, this.resolve)

treeLoad(node: any, resolve: any){
    // 存储一下resolve参数
    this.resolve = resolve
}

最后采用了下面的方法,重新展开node节点,实现调用load加载方法 ╮(╯_╰)╭

node.loaded = false
node.expand();

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值