echarts树图添加节点点击事件

本文档详细介绍了如何使用ECharts初始化树图并添加节点点击事件。通过监听'click'事件,实现点击不同层级节点时执行不同操作。在节点点击事件中,通过判断点击目标的culling属性来区分点击的是节点还是节点文本,并根据节点的level属性执行相应逻辑。此示例适用于需要交互式树形结构展示和操作的场景。
摘要由CSDN通过智能技术生成

需求:为树图添加节点点击事件,点击不同层级的节点文本时进行不同的操作

实现过程:

// 初始化树图方法
initTreeChart(){
	//-----------------------第一步:实现树图,代码如下---------------------------
	//获取echarts要渲染的元素
    let dom = document.getElementById('treeChartBox');
    let myChart = this.echarts.init(dom);
    //模拟数据,注意树图取的是name属性
    let data = [{
	    name: "规则配置",
	    children:[
	        {
	            name:'数据规范性检查',
	            children:[
	                {name:'目录及文件规范性(1010)'},
	                {name:'数据有效性(1020)'},
	                {name:'图件清晰度(1030)'},
	                {name:'元数据(1040)'}
	            ],
	            collapsed: true //默认展开或者关闭
	        },{
	            name:'图形一致性检查',
	            children:[
	                {name:'面层之间拓扑关系(2020)'}
	            ]
	        },{
	            name:'图数一致性检查',
	            children:[
	                {name:'面层之间拓扑关系(2020)'}
	            ]
	        }
	    ]
	}];
    //树图配置
    let option = {
        tooltip: {
            trigger: 'item',
            triggerOn: 'mousemove'
        },
        series: [
            {
                type: 'tree',
                data: data,
                top: '1%',
                left: '7%',
                bottom: '1%',
                right: '20%',
                symbolSize: 10,
                itemStyle:{
                    color: '#228EFB' ,
                },
                lineStyle:{
                    color: '#DDD',
                },
                label: {
                    color: "#333",
                    position: 'left',
                    verticalAlign: 'middle',
                    align: 'right',
                    fontSize: 14
                },
                leaves: {
                    label: {
                        position: 'right',
                        verticalAlign: 'middle',
                        align: 'left'
                    }
                },
                emphasis: {
                    focus: 'descendant'
                },
                expandAndCollapse: true,
                animationDuration: 550,
                animationDurationUpdate: 750
            }
        ]
    };
    myChart.setOption(option);
    // 获取数据设置图形的高度,避免数据过多时出现重叠现象
    const nodes = myChart._chartsViews[0]._data._graphicEls;
    let mindBox = document.getElementById('mindBox');
    let allNode = 0;
    for (let index = 0; index < nodes.length; index++) {
        const node = nodes[index];
        if (node === undefined) {
            continue
        }
        allNode++;
    }
    const height = window.innerHeight;
    const currentHeight = 15 * allNode;
    const newHeight = Math.max(currentHeight, height);
    mindBox.style.height = newHeight + 'px';
    dom.style.height = newHeight + 'px';
    myChart.resize();
    //-----------------------第二步:为树图添加节点点击事件,代码如下---------------------------
    myChart.on("click", this.treeNodeclick);
},
// 节点点击事件
treeNodeclick(param){
    /* true 代表点击的是圆点
       fasle 表示点击的是当前节点的文本
    */
    if(param.event.target.culling === true){
        return
    } else if(param.event.target.culling === false){
        let args = param.data; //当前节点及其子节点的值
        let level = param.data.level; //当前节点的层级 eg:"1-1-0",可以通过level判断当前的层级,从而进行不同的操作
        console.log(args,level);
    }
},
要在echarts树图中的节点后面添加一个可以点击的元素,可以使用echarts的自定义节点功能。您可以通过以下步骤实现: 1.在echarts中,使用`series.tree`配置项来绘制树图。 2.使用`series.tree.data`配置项来定义树图中的每个节点。 3.将节点的`itemStyle`属性设置为`{color: '#fff', borderColor: '#000'}`,以便在节点后面放置一个可以点击的元素。 4.在节点后面添加一个元素,可以使用`series.tree.leaves`配置项,该配置项可以用来自定义节点的标记。 5.使用`series.tree.leaves.label`配置项来定义标记的文本内容。 6.使用`series.tree.leaves.symbol`配置项来定义标记的图形,如图标、矩形或圆形。 7.使用`series.tree.leaves.symbolSize`配置项来定义标记的大小。 8.使用`series.tree.leaves.itemStyle`配置项来定义标记的样式。 例如,您可以使用以下代码在每个节点后面添加一个可以点击的矩形: ``` series: [ { type: 'tree', data: [...], // 树图中的节点数据 symbol: 'emptyCircle', // 节点的默认标记 symbolSize: 7, // 节点的默认标记大小 label: { // 节点上的标签 position: 'right', verticalAlign: 'middle', align: 'left' }, leaves: { label: { // 标记上的文本 position: 'insideRight' }, symbol: 'rect', // 标记的图形 symbolSize: [30, 20], // 标记的大小 itemStyle: { // 标记的样式 color: '#f48fb1', borderColor: '#f48fb1' } } } ] ``` 这样,每个节点后面就会有一个可以点击的矩形,您可以根据需要自定义矩形的大小、颜色和样式。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值