tree树结构

这篇博客介绍了如何在Vue.js项目中构建和操作树形结构,包括渲染节点内容、监听节点事件(点击、双击、右键菜单)以及动态加载和管理节点的选中状态。通过定义`defaultProps`和`defaultCheckKeys`属性来定制树结构,同时使用自定义渲染函数`renderContent`展示不同类型的节点图标。
摘要由CSDN通过智能技术生成

tree树结构的使用

//	data 中的代码
        const _imgSrc1 = require('../imgs/iconTQ.png');
		const _imgSrc2 = require('../imgs/iconYH.png');
		const _imgSrc3 = require('../imgs/icon3ji.png');
		const _imgSrc4 = require('../imgs/iconFKZD.png');
		const _imgSrc5 = require('../imgs/iconJLD.png');
		defaultProps: {
           children: 'childrenList', // children对应的是接口返回子数组的 key,key要让后端统一名字
            label: 'name'	// // label就是每一级接口的名字,按接口返回对应的名字进行赋值
        },
        defKeys:[],     // 默认选中选中节点Id值的数组

```javascript
//	HTML的代码
//  树结构
// node-key="consId" id根据接口返回的id名称填写
         <div class="leftF">
             <ls-tree  :show-line="true"
                 @node-dbclick="handleNodeDbclick"
                 @node-contextmenu="handleNodeContext"
                 :data="data"
                 :props="defaultProps"
                 @node-click="handleNodeClick"
                 :indent="10"
                 node-key="consId"
                 :default-check-keys="defKeys"
                 :expand-on-click-node="false"
                 default-expand-all
                 :render-content="renderContent"
                 :current-node-key="1">
             </ls-tree>
         </div>
//	methods的代码
renderContent(h, obj) {
            var self = this;
            return h(Vue.extend({
                template: '<span>' +
                    '<span class="nodeImg">' +
                    `<img :src="type === '1' ? iconImgArr.img1 : type === '2' ? iconImgArr.img2 : type === '3' ? iconImgArr.img3 : type === '4' ? iconImgArr.img4 : type === '5' ? iconImgArr.img5 : ''" @error="pic=false">` +
                    '</span>' +
                    '<span>{{node.label}}</span>' +
                    '</span>',
                computed: {
                },
                data: function () {
                    return {
                        node: obj.node,
                        type: obj.data.type,
                        data: obj.data,
                        store: obj.store,
                        iconImgArr: {
                            img1:_imgSrc1,
                            img2:_imgSrc2,
                            img3:_imgSrc3,
                            img4:_imgSrc4,
                            img5:_imgSrc5
                        },
                        append: function () {
                            self.append(obj.store, obj.data);
                        },
                        remove: function () {
                            self.remove(obj.store, obj.data);
                        }
                    }
                }
            }));
        },
		handleNodeContext:function(event,object,value,element){
           if(value.level == 1){
                var _this = this;
                // _this.menuVisible = true;
                let menu = document.querySelector("#menu");
                /* 菜单定位基于鼠标点击位置 */
                menu.style.left = event.clientX + 20 + "px" ;
                menu.style.top = event.clientY -10 + "px";
            }

        },
        // 点击每一层节点,可以获取当前节点中的数据,可以在这里将相应的id传到请求获取详情
        handleNodeClick (data) {
            console.log(data.type,'data.type');
            this.isShowBox = data.type
            if (data.type === '0') {
                return data.type === '0' ? this.isShowTQ = true : this.isShowTQ = false
            } 
            // this.detailQuery(data.id) 请求当前节点数据
        },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值