ucharts插件问题记录-组件事件@getIndex

项目场景:

uniapp项目,使用hbuilderx引入的ucharts插件。

项目场景:要实现一个饼图下钻功能,所以会用到点击事件。通过点击事件,获取到点击的项,来判断是否可以下钻。


问题描述

获取点击项的下标有问题,始终是-1;并且原本的点击展示label功能失效

通过ucharts组件中的@getIndex事件获取当前点击的数据下标,然后通过下标找到原始数据,并判断是否可以下钻。下钻后,图表右上角要有一个返回上一层的按钮。返回按钮用浮动来定位(即position:absolute),所以它的父元素需要position:relative来做限制。
代码如下:

	//html如下
	<view class="chart">
		<view class="back" v-if="stack.length > 1" @click="() => stack.pop()">
			<tui-icon size="16" name="back"></tui-icon>
			<text>返回</text>
		</view>
		<DataCharts type="pie" :opts="opts" :chartData="chartData" @getIndex="getIndex" />
	</view>
	//函数如下			
	const getIndex = (e) => {
		console.log('e==', e);
		const idx = e.currentIndex;//这里获取的idx始终是-1
		const current = e.opts.series[idx];
		if (current && current.children?.length > 0) {
			stack.push(current.children);
		}
	};
	//样式如下
	.chart {
		width: 100%;
		height: 550rpx;
		position: relative;//问题就出在这里了
	}
	.back {
		color: #999;
		padding: 2px 6px;
		position: absolute;
		font-size: 14px;
		z-index: 99999;
		top: 0;
		right: 0;
	}

原因分析:

就是因为ucharts组件的父元素使用了position:relative,所以导致ucharts的组件方法@getIndex无法获取到下标,返回的是默认的下标-1;


解决方案:

将父元素中的position:relative样式去掉即可正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全村最肉的人

如果对你有用,就赏博主1分钱!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值