IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 关于elementui中的tree形组件的懒加载模式的使用 -> 正文阅读

[JavaScript知识库]关于elementui中的tree形组件的懒加载模式的使用

<template>
  <div>
    <el-tree
      node-key="id"
      lazy
      :load="loadNode"
      :props="defaultProps"
      :expand-on-click-node="false"
      :check-on-click-node="true"
      v-loading="list.loading"
      @node-click="nodeClick"
      ref="tree"
    >
    </el-tree>
  </div>
</template>

<script>
// https://www.fastmock.site/mock/9846b0461be6cbf4f1dfd50fd4b9b0bb/tree/zxt
import axios from "axios";
export default {
  data() {
    return {
      list: {
        loading: false,
        isExpand: false,
      },
      defaultProps: {
        // tree 控件的数据结构,需要设置 isLeaf
        children: "children",
        label: "name",
        isLeaf: "leaf",
      },
      loading: false,
      curPath:'',
      curNode:''
    };
  },
  methods: {
    nodeClick(data, node) {
      this.curPath = data.path;
      this.curNode = node;
    },
    // 实现局部刷新,在点击弹窗处调用的
    partialRefreshpartialRefresh(node) {
      node.loaded = false; // 设置loaded为false;模拟一次节点展开事件,加载重命名后的新数据;
      node.expand(); // 新建子节点是刷新一次本节点的展开请求,而重命名和删除则需要刷新父级节点的的展开事件,可以设置node.parent.loaded = false;node.parent.expand();
    },

    async loadNode(node, resolve) {
      // 懒加载
    //   console.log(52,node);
    //   if (node.level === 0) {
    //     return resolve(await this.getTagList());
    //   } else if (node.level === 1) {
    //     return resolve(await this.getTagApiList(node.label));
    //   }else if (node.level === 2) {
    //     return resolve(await this.TagApiList(node.label));
    //   }
    //    else {
    //     return resolve([]); // 防止该节点没有子节点时一直转圈的问题出现
    //   }
     return resolve(await this.getTagList(node, resolve))
    },
    async getTagList(node, resolve) {
        var level = ''
        console.log(67,node);
        if(node.level==0){
            level='zxt'
        }else if(node.level==1){
            level='zxtb'
        }else{
            level='zxtc'
        }
        console.log(node.level,level);
       
      // 获取所有接口所属模块 -> 第一层
      this.list.loading = true;
      const res = await axios.get(
        `https://www.fastmock.site/mock/9846b0461be6cbf4f1dfd50fd4b9b0bb/tree/${level}`
      );
    
      const tags = res.data.data;
      tags.forEach((item, index) => {
        // 节点需要构建为 tree 的结构
        item.name = item.label;
        item.id = index;
        item.leaf = false;
      });
      this.list.loading = false;
      console.log(55, tags);
      return tags;
    },
    // async getTagList(node, resolve) {
    //   // 获取所有接口所属模块 -> 第一层
    //   this.list.loading = true;
    //   const res = await axios.get(
    //     "https://www.fastmock.site/mock/9846b0461be6cbf4f1dfd50fd4b9b0bb/tree/zxt"
    //   );
    
    //   const tags = res.data.data;
    //   tags.forEach((item, index) => {
    //     // 节点需要构建为 tree 的结构
    //     item.name = item.label;
    //     item.id = index;
    //     item.leaf = false;
    //   });
    //   this.list.loading = false;
    //   console.log(55, tags);
    //   return tags;
    // },
    async getTagApiList(tag) {
      // 查询模块下的接口列表 -> 第二层
     
      const res = await axios.get(
        "https://www.fastmock.site/mock/9846b0461be6cbf4f1dfd50fd4b9b0bb/tree/zxtb"
      );
      const results = res.data.data;
       console.log(85,results);
      results.forEach((item) => {
        item.name = item.label;
        item.id;
        item.leaf = true;
      });
      return results;
    },
    async TagApiList(tag) {
      // 查询模块下的接口列表 -> 第二层
     
      const res = await axios.get(
        "https://www.fastmock.site/mock/9846b0461be6cbf4f1dfd50fd4b9b0bb/tree/zxtc"
      );
      const results = res.data.data;
       console.log(103,results);
      results.forEach((item) => {
        item.name = item.label;
        item.id;
        item.leaf = true;
      });
      return results;
    },
  },
};
</script>

<style>
</style>
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-21 12:06:15  更:2021-10-21 12:08:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/13 2:02:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码