Vue tree 懒加载(结合联动情况)

本文详细介绍了如何使用Element UI的Tree组件实现懒加载功能,包括如何设置属性、使用load方法以及展示一级菜单的不同方式。通过代码示例,读者可以了解到如何根据节点级别加载数据,以及在联动和非联动情况下分别采取的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、官方实例

由于在点击节点时才进行该层数据的获取,默认情况下 Tree
无法预知某个节点是否为叶子节点,所以会为每个节点添加一个下拉按钮,如果节点没有下层数据,则点击后下拉按钮会消失。同时,你也可以提前告知
Tree 某个节点是否为叶子节点,从而避免在叶子节点前渲染下拉按钮。

代码实例

<el-tree
  :props="props1"
  :load="loadNode1"
  lazy
  show-checkbox>
</el-tree>

一定要设置lazy属性,并且在点击展开的时候调用load对应的方法
展示一级菜单可以采用两种形式:

  1. 使用data属性:data=“directories.dataList”,这种方式适合联动处理,比如选择一个下拉框然后才展示一级菜单。
  2. 在load方法中获取。

1.1、data属性加载

if(node.level===0){
      return resolve(this.directories.dataList);
}

在联动的情况下,在符合条件,并且要取tree数据的情况,给directories.dataList赋值,tree自动回加载一级菜单,然后再load方法中加上上面的代码进行兼容。

1.2、load方法加载

if(node.level===0){
     return getFirstDirectoriesData(node, resolve);
 }else{
     this.getNextDirectoriesData(node, resolve);
 }

这个适合非联动情况。
第一次加载的时候调用getFirstDirectoriesData获取数据。
下面每次加载的时候调用getNextDirectoriesData获取数据。

获取数据大致是这样
this.$axios.post(url, self.directories.nextSearchCondition).then((res) => {
                    res = res.data;
                    if(res.success){
                        return resolve(res.data.directories);
                    }else{
                        self.$message.error(res.message);
                        return resolve([]);
                    }
                },(res)=>{
                    self.showInternalError(res);
                    return resolve([]);
                });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值