el-tree的懒加载树 应用到项目中

<template>
  <el-tree
    :data="treedata"//放你的数据结构
    :props="props"//这个是数据中展示的字段
    :load="loadNode"//懒加载的方法
    lazy//开启懒加载
    v-model="checkedNodes"
  />
</template>

<script>
export default {
      data(){
        return {
              treedata: [], //tree数据
              props: {
                label: `name`,
                children: `children`, // 显示子节点的字段名
                isLeaf: (node) => !node.Parent && !node.children,//这个事件是不让没有子数据的在显示左箭头
              },
              checkedNodes:[],
        }
      },
      methods:{
            getTreeData () {
                const params = {
                    传参:传参,
                    Id: null,//一开始的拿第一层数据的时候为null或者""空
                };
                getTreeData(params).then((res) => {
                  if (res.result === true) {
                    this.treedata = res.resultdata.data;
                  }
                  else {
                    this.$message({
                      type: `warning`,
                      message: `获取信息出错`,
                    });
                  }
                });
            },
            // tree的懒加载数据
            loadNode (node, resolve) {
              if (node.level === 0) {
                return resolve(this.treedata);//将第一层的数据也展示出来
              }
              //这个999是让用户选择的时候能打开多层,
              // 如果只写3的话就默认只能打开3层,数据多的话
              // 影响用户体验
              if (node.level > 9999) return resolve([]);
              // 请求子节点数据
              setTimeout(() => {
                const params = {
                    传参:传参,
                    Id: node.data.id,//第一层为null或者""空,这一层我们传懒加载方法中的id
                };
                getTreeData(params).then((data) => {
                  if (data.result === true) {
                    node.childNodes = [...node.childNodes, ...data.resultdata.data];
                    const updatedChildren = node.childNodes.map((child) => {
                      child.checked =
                        this.checkable &&
                        this.checkedNodes.some((node) => node.id === child.id);
                      return child;
                    });
                    resolve(updatedChildren);
                  }
                  else {
                    this.$message({
                      type: `warning`,
                      message: `获取信息出错`,
                    });
                  }
                });
              }, 500);
            },
      }
}
</script>

以上仅供参照,按照自己的实际情况来改写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值