最近在项目中用到了 elementUI 的懒加载 tree 组件,因为项目里有新增、修改、删除节点的功能,使用了以后发现不能主动更新 tree 的数据,查阅资料,发现找不到解决的方案,最后尝试了 N 多种方法,最后终于搞定了。

先上一部分代码

html 部分

:load="loadNode"

lazy

:props="props"

ref="tree"

node-key="id"

:expand-on-click-node="false"

style="margin-top: 10px;">

{{ `课程:${node.label}` }}

type="text"

size="mini"

@click="() => editNode(node, data)">

修改课程

v-if="node.level === 1"

type="text"

size="mini"

@click="() => addNode(node, data)">

新增课程

type="text"

size="mini"

style="color: #fd8076"

@click="() => delTree(node, data)">

删除课程

加载数据的方法

loadNode (node, resolve) {

// 这里是因为一、二级的节点请求的接口不一样,所以做一些处理,不用管这个

const url = node.level === 0 ? this.treeUrlHash[node.level] : `${this.treeUrlHash[node.level]}/${node.data.id}`

this.$http('get', url)

.then(res => {

if (res.code === '200') {

resolve(res.data)

}

})

}

下面我用新增节点来说明:

第一种解决方案,可使用官方提供的 append 方法,代码如下,nodeData 就是你新增的数据。但是这种方法有一个问题,这只是前台在添加完成后(接口返回成功),伪造的一条数据,目的只是让用户看到添加成功了一条数据,并没有重新请求接口并刷新所有的节点。问题来了,如果新增成功以后,不做任何操作(不刷新页面),去删除此节点,会发现此节点没有 ID ,删除不了,也就是说添加成功后我们前端没有拿到属于该节点的 ID ,所以没法删除。

添加节点方法

addNode (node, data) {

const nodeData = {name: '新增节点'}

this.$refs.tree.append(nodeData, node)

},

那么怎么处理呢,可以与后台协商,在添加成功对接口里返回该节点对 ID,然后 append 节点的时候,把此节点的 ID 也添加进去,就 OK 了。

第二种解决方案:可以在第一次加载数据的时候,把 loadNode 的 2 个参数保存下来,然后添加节点的时候,重新调用一下这个方法就可以了。下面是代码:

加载数据的方法

loadNode (node, resolve) {

// isFirst 为了保证只在第一次加载的时候进行

if (this.isFirst) {

this.node = node

this.resolve = resolve

this.isFirst = false

}

// 这里是因为 1 2 级的节点请求的接口不一样,所以做一些处理

const url = node.level === 0 ? this.treeUrlHash[node.level] : `${this.treeUrlHash[node.level]}/${node.data.id}`

this.$http('get', url)

.then(res => {

if (res.code === '200') {

resolve(res.data)

}

})

}

添加节点方法

addNode (node, data) {

this.node.childNodes = [] // 这里把子节点清空,是因为再次调用 loadNode 的时候会往 childNodes 里 push 节点,所以会有节点重复的情况。

this.loadNode(this.node, this.resolve)

},

这样就可以主动刷新节点数据了。如果有更好的办法或者哪些地方不正确,希望大家指正,谢谢。

matlab uitree update,elementUI tree 懒加载 更新节点相关推荐

  1. element tree ui 全选_element-ui Tree之懒加载叶子节点设置半选效果

    本来是不太想动的... 无可奈何,看到一句话[业精于勤, 荒于嬉]便还是动手写一写加深理解的同时给以后的自己留个备份吧... element-ui Tree组件如何给具有懒加载的tree设置半选效果? ...

  2. element-ui 树形表格 懒加载 手风琴模式 拖动排序

    手风琴模式 实现的效果: 其中一个节点展开时,其他节点关闭,一直保持最多只有一个节点是展开的. 需要解决的问题: element-ui 树形懒加载表格自带的节点展开时,默认只有第一次才会触发load函 ...

  3. LayUi 树形组件tree 实现懒加载模式,展开父节点时异步加载子节点数据

    LayUi框架中树形组件tree官方还在持续完善中,目前最新版本为v2.5.5 官方树形组件目前还不支持懒加载方式,我自己修改了下最新源码tree.js,简单粗暴的方式支持懒加载模式.(Ps:最新更新 ...

  4. 列表懒加载和图片懒加载

    参考链接整理: element-ui自带的图片懒加载指令和列表懒加载指令 element-ui 图片懒加载 element-ui 列表懒加载 原理和原生js:图片懒加载 如何用原生js实现图片懒加载( ...

  5. Androidx ViewPager+Fragment 懒加载

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/113545036 本文出自[赵彦军的博客] 目录 前言 懒加载(预加载) 传统模式 ...

  6. ElementUI的el-tree实现懒加载查询和直接全部查询出来

    文章目录 懒加载实现(点击一级才出现二级的数据) 前端vue实现 1. vue的template里面的代码 2vue文件里面的data数据 3vue文件里面的methods方法 4vue文件里面的监听 ...

  7. element ui 图片加载失败_2.ElementUI之图片懒加载无法显示的问题,求教。

    在使用这个组件的时候,遇到了奇奇怪怪的Bug. 页面出来了,但图片的懒加载功能却没出来,没有实现官网给出的效果. 代码如下 这是gourmet world页面 11111 export default ...

  8. elementui级联选择器懒加载回显亲测有效

    记录一下自己挣扎迷茫的一天,如果有同样遇到级联选择器要回显的同志,希望你早点看到这篇日志.进入正题,如何在懒加载上回显. //组件上写法 <el-cascader:options="l ...

  9. vue 图片拖动加载 类似于地图_前端性能优化之图片懒加载(附vue自定义指令)...

    作者:lzg9527 链接:https://juejin.cn/post/6903774214780616718 在类电商类项目,往往存在大量的图片,如 banner 广告图,菜单导航图,美团等商家列 ...

最新文章

  1. linux 浏览器源码下载,Android开发:图片浏览器源码
  2. 初学python的30个操作难点汇总(入门篇)希望对你有帮助
  3. SAP MM 创建退货类型的公司间STO,报错 -No delivery type for returns processing assigned to item 00010-
  4. 详解GPU的常见参数及其对显卡的重要性
  5. python循环语句-Python-循环语句及循环控制语句
  6. python简单代码input-Python简单程序的练习
  7. 22.6. 视图(View)
  8. WPF实现统计图(饼图仿LiveCharts)
  9. 定义jQuery插件
  10. Chapter3-1_Speech Separation(Deep Clustering, PIT)
  11. I.MX6 Parallel RGB LCD Datasheet描述
  12. web前端面试题(必背面试题)
  13. 通用点阵字库生成工具
  14. python 两幅图片融合成一张图片
  15. android打包证书文件在线生成
  16. 笔记|统计学习方法:感知机模型
  17. 硬链接和软连接 linux 的ln命令
  18. Android使用RenderScript实现图片的高斯模糊效果
  19. 送给SQL开发者的一份新年礼物!麦聪软件发布一款纯Web化SQL开发工具,免安装还免费!
  20. 施炜:华为为什么能成功?

热门文章

  1. python函数参数理解
  2. 第2题——DNA片段
  3. 通过shell脚本定期更新elasticsearch数据
  4. docker logstash log docker logs to elasticsearch
  5. 【iOS-Cocos2d游戏开发之十五】详解CCProgressTimer 进度条并修改cocos2d源码实现“理想”游戏进度条!...
  6. oracle 创建用户、授权、表空间
  7. Missing artifact com.sun:tools:jar:1.5.0
  8. ftp安装遇到的问题
  9. datanode 不能连接master
  10. linux c 编译报错 Compile error : undefined reference to‘__atomic_fetch_add_4’ 解决方法