zoukankan      html  css  js  c++  java
  • Vue + Element tree树形控件的懒加载使用

    come on,Bro。直接上代码。

    先看效果:

    1.界面中:

    1 <el-tree
    2       :data="treeData"
    3       :props="defaultProps"
    4       :load="loadNode"
    5       @node-click="handleNodeClick"
    6        lazy>
    7  </el-tree>

    2.data中:

    1 treeData: [ ],      // 树节点
    2 defaultProps: {     // 修改el-tree默认data数组参数
    3        children: 'children',
    4        label: 'name',
    5        id: 'id',
    6        parentId: 'parentId',
    7        isLeaf: false      // 指定节点是否为叶子节点,仅在指定了 lazy 属性的情况下生效
    8 },

    3.script中:

    loadNode(node, resolve) {        // 加载 树数据   
                    let that = this;
    
                    if (node.level === 0) {
                        that.loadtreeData(resolve);
                    }
    
                    if (node.level >= 1) {
                        this.getChildByList(node.data.id, resolve);
                        return resolve([]); // 加上这个,防止在该节点没有子节点时一直转圈的问题发生。
                    } 
    },
    loadtreeData( resolve) {      // 获取loadtreeData 就是父节点数据,getChildByList就是异步获取子节点数据
                    let params = {ParentID : 0};
                 
                    this.$http({url: "",data: params,type: 'get'}).then(res =>{ 
                        // console.log("商品信息的 tree: ",res)   
                        if(res.success == true) {
                            let data = res.data;
                            // 前者item.参数名称为 prop中的规定的属性名称
                            data.forEach(item => {
                                item.name = item.name;
                                item.parentId = item.parentId;
                                item.id = item.id;
                                item.isLeaf = true;
                            });
                            resolve(data)
                        }else {
                            return false;
                        }    
        
                    }).catch(err =>{
                        console.log(err);
                    });
    },
    getChildByList( _parentID,resolve) {     // 获取子节点请求
                    let params = {ParentID : _parentID};
                    this.$http({url: "",data: params,type: 'get'}).then(res =>{ 
                        if(res.success == true) {
                            let data = res.data;
                            data.forEach(item => {
                                item.name = item.name;
                                item.parentId = item.parentId;
                                item.id = item.id;
                                item.isLeaf = false;
                            });
                            resolve(data);
                        } else {
                            return false;
                        }   
                    }).catch(err =>{
                        console.log(err);
                    });
    },
    
     handleNodeClick(data) {          // 节点被点击时的回调      
                    console.log(data)
     },
  • 相关阅读:
    深入理解计算机系统(3.2)---数据格式、访问信息以及操作数指示符
    深入理解计算机系统(3.1)---走进汇编的世界
    linux下的usb抓包方法
    Linux中查看系统资源占用情况的命令
    中药介绍
    shell中的for循环用法详解
    Linux上shell脚本date的用法
    linux下的shell运算(加、减、乘、除)
    [linux time命令学习篇] time 统计命令执行的时间
    一文简述多种强化学习算法,重要概念和术语一览
  • 原文地址:https://www.cnblogs.com/xintao/p/13055898.html
Copyright © 2011-2022 走看看