小程序直播带货_详解怎么完成Element树形控件Tree在懒加载模式下的动态更新

  • 栏目:公司新闻 时间:2021-01-07 14:22 分享新闻到:
<返回列表

详解如何实现Element树形控件Tree在懒加载模式下的动态更新       这篇文章主要介绍了详解如何实现Element树形控件Tree在懒加载模式下的动态更新,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

Element提供的Tree树形控件,可以用清晰的层级结构展示信息,还可以展开或折叠。Tree支持两种加载模式:一次性加载全部树节点和懒加载模式。所谓懒加载模式,是指当需要展开父节点时才渲染子节点。懒加载模式的应用场景适合树节点数据量大的情形,在一定程度上可以优化图形用户界面的响应效率以及提升用户体验。但是,懒加载模式对数据动态刷新应用需求的支持不尽如意。树形控件节点一旦展开就缓存在本地,后续不会再继续更新和刷新节点数据。本文将介绍如何实现Element树形控件Tree在懒加载模式下的动态更新。具体需求如下图所示:

动态更新需求

当Select选择器选择箱变、逆变器、汇流箱或组串等类型时,Tree树形控件会动态刷新显示相应类型的设备名称。我们知道在懒加载模式下,Tree树形控件节点一旦展开,就不再重新加载节点数据。那么如何实现在选择不同类型时动态刷新树形控件节点数据显示呢?一种实现思路是在Select选择器发生变化时,在change事件中清空Tree树形控件的全部子节点,然后再重新加载树形控件节点数据。关键代码如下图所示:

清空树形控件节点

首先,通过树形控件的父节点清空所有子节点数据,然后调用loadNode1方法重新构建树形控件懒加载数据。loadNode1是树形控件load属性指定的加载树的方法,该方法在加载树或者展开某个节点时会被自动调用。

我们可以看到,传递给loadNode1方法有两个参数,this.node和this.resolve,这两个参数都是树形控件顶层节点属性数值。那么,是如何获取到这两个参数数值的呢?具体方法是:首先,申明node和reslove两个变量用于保存顶层节点的node和reslove数值。然后,在树形控件加载时将node.level===0情况下的node和reslove数值保存。如下图所示:

获取顶层节点

loadNode1内部是通过reslove方法,将数据逐级推至树形控件数据结构中的。先执行reslove方法的数据是父节点,后执行reslove方法的数据是子节点,在无子节点的情况下通过调用reslove([])实现。

结束语:至此,实现了Element的Tree树形控件懒加载模式下的节点数据动态更新。在子节点数据量大的情况下,懒加载和动态更新机制,在一定程度上解决了响应效率问题,也提升了用户体验。

补充:element ui 懒加载树节点内子项的动态更新

 el-tree
 :pro凡科抠图="pro凡科抠图1"
 :load="loadNode1"
 lazy
 show-checkbox 
 /el-tree 
 script 
 export default {
 data() {
 return {
 pro凡科抠图1: {
 label: 'name',
 children: 'zones',
 isLeaf: 'leaf'
 methods: {
 loadNode1(node, resolve) {
 if (node.level === 0) {
 return resolve([{ name: 'region' }]);
 if (node.level 1) return resolve([]);
 setTimeout(() = {
 const data = [{
 name: 'leaf',
 leaf: true
 }, {
 name: 'zone'
 resolve(data);
 }, 500);
 /script 

上面代码是element ui官方树懒加载的实例。实现就是添加lazy,绑定一个load属性,点击节点的时候,就会触发loadNode1的方法,将数据刷到点击的节点里面。

这里的问题是:如果该节点load过数据,再次点击是不会触发loadNode1这个方法的,但是这个节点下的子节点也许会动态增加或者删除

解决的思路是:

1、得到选中的节点

2、将选中节点的子节点全部删除

3、将选中节点的子节点数据手动刷到该节点内

我查过element ui源码,这里用到源码内的方法,所以我们实现下来很方便,只要三行代码

function refreshLazyTree(node, children) {
 var theChildren = node.childNodes
 theChildren.splice(0, theChildren.length)
 node.doCreateChildren(children)

1、node就是选中的的节点(也就是点击展开的节点),你可以通过element ui里的getNode方法获得,。

2、children就是node这个节点的子项

3、通过splice方法删除node节点下的所有子项

4、调用doCreateChildren创建子项就ok了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持凡科。


分享新闻到:

更多阅读

小程序直播带货_详解怎么完成Element树形

公司新闻 2021-01-07
详细说明怎样完成Element树型控制Tree在懒载入方式下的动态性升级 本文关键详细介绍了详...
查看全文

招聘微信小程序系统_Vue2.0完成组件之间数

公司新闻 2021-01-07
Vue2.0完成部件中间数据信息互动和通讯实际操作实例 本文关键详细介绍了Vue2.0完成部件...
查看全文

广州凡科互联网科技股份有限公司招聘服

公司新闻 2021-01-07
招聘人数:10职位信息1、对负责的女装产品线(主要是***运动服装)进行系统规划和分析,制...
查看全文
返回全部新闻


区域站点: 南丰县小程序前端设计   南宫市有赞小程序   囊谦县小程序下载安装   南和县小程序模板源码   南华县小程序前端设计   南江县有赞小程序   南京市小程序下载安装   南靖县小程序模板源码   南康市小程序前端设计   南乐县有赞小程序   南陵县小程序下载安装   南宁市小程序模板源码   南平市小程序前端设计   南皮县有赞小程序   南市区小程序下载安装   南通市小程序模板源码   南投县小程序前端设计   南雄市有赞小程序   南溪县小程序下载安装   南阳市小程序模板源码   南漳县小程序前端设计   南召县有赞小程序   南郑县小程序下载安装   那坡县小程序模板源码   那曲县小程序前端设计   纳雍县有赞小程序   讷河市小程序下载安装   内黄县小程序模板源码   内江市小程序前端设计   内丘县有赞小程序   内乡县小程序下载安装   嫩江市小程序模板源码   聂荣县小程序前端设计   尼玛县有赞小程序   尼木县小程序下载安装   宁安市小程序模板源码   宁波市小程序前端设计   宁城县有赞小程序   宁德市小程序下载安装   宁都县小程序模板源码   宁国市小程序前端设计   宁海县有赞小程序   宁化县小程序下载安装   宁晋县小程序模板源码   宁陵县小程序前端设计   宁明县有赞小程序   宁南县小程序下载安装   宁强县小程序模板源码   宁陕县小程序前端设计   宁武县有赞小程序   宁乡市小程序下载安装   宁阳县小程序模板源码   宁远县小程序前端设计   农安县有赞小程序   磐安县小程序下载安装   盘锦市小程序模板源码   盘山县小程序前端设计   磐石市有赞小程序   盘州市小程序下载安装   蓬安县小程序模板源码   澎湖县小程序前端设计   蓬莱市有赞小程序   彭山县小程序下载安装   蓬溪县小程序模板源码   彭阳县小程序前端设计   彭泽县有赞小程序   彭州市小程序下载安装   偏关县小程序模板源码   平安县小程序前端设计   平昌县有赞小程序   平定县小程序下载安装   屏东县小程序模板源码   平度市小程序前端设计   平果县有赞小程序   平和县小程序下载安装   平湖市小程序模板源码   平江县小程序前端设计   平乐县有赞小程序   平凉市小程序下载安装   平利县小程序模板源码   平罗县小程序前端设计   平陆县有赞小程序   屏南县小程序下载安装   平泉市小程序模板源码   屏山县小程序前端设计   平顺县有赞小程序   平塘县小程序下载安装   平潭县小程序模板源码   平武县小程序前端设计   萍乡市有赞小程序   平乡县小程序下载安装   平阳县小程序模板源码   平遥县小程序前端设计   平阴县有赞小程序   平邑县小程序下载安装   平远县小程序模板源码   平舆县小程序前端设计   皮山县有赞小程序   普安县小程序下载安装   浦北县小程序模板源码   浦城县小程序前端设计   普洱市有赞小程序   普格县小程序下载安装   浦江县小程序模板源码   普兰县小程序前端设计   普宁市有赞小程序   莆田市小程序下载安装   迁安市小程序模板源码   乾安县小程序前端设计   潜江市有赞小程序   潜山市小程序下载安装  

友情链接: 微信小程序开发框 凡科小程序 免费打卡小程序怎 微信小程序 游戏

Copyright © 2002-2020 小程序下载安装_小程序模板源码_小程序前端设计_有赞小程序_线上签到小程序 版权所有 (网站地图) 备案号:粤ICP备10235580号