• 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)
     },
  • 相关阅读:
    【求助】测试XCode v8.0的正向反向功能
    新生命XProxy代理V1.1.2008.0307 (开源)
    1,日志组件XLog
    关于 title 属性导致触发 mousedown 事件时连带触发 mousemove
    CSS3制作跳蛋
    JQuery Pagination With Bootstrap
    关于 placeholder 在 360chrome 下的兼容性问题记录
    jQuery 模拟 ubuntu 3D desktop 的 Dodge Effect 效果
    网站导航(多视图页面:MultiView 和 Wizard 控件)
    自定义服务器控件(控件状态和事件)
  • 原文地址:https://www.cnblogs.com/xintao/p/13055898.html
Copyright © 2020-2023  润新知