uniapp 如何使用echarts 以及解决tooltip自定义不生效问题

这篇具有很好参考价值的文章主要介绍了uniapp 如何使用echarts 以及解决tooltip自定义不生效问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用的是echarts-for-wx插件;
正常写法案例:给tooltip数值加个%

<template>
    <view>
       <uni-ec-canvas 
          class="uni-ec-canvas"
          id="uni-ec-canvas"
          ref="canvas"
          canvas-id="uni-ec-canvas"
          :ec="ec"
       ></uni-ec-canvas>
    </view>
</template>
<script>
// 此处将路径替换为你放置该组件的路径  
import uniEcCanvas from './uni-ec-canvas/ec-canvas.vue'  

export default{
    data(){
        return {
            ec:{
                options:{} //echart 配置项
            }
        }
    },
    components:{
        uniEcCanvas
    },
    mounted(){
		this.initChart()
	},
    methods:{
		initChart(){
			this.ec.option={
				//其他配置项我就不写了,只展示tooltip
				tooltip: {
						trigger: 'axis',
						confine: true, //提示框限制在图形内
						axisPointer: {
							type: 'line',
							axis: 'auto', // 指示器的坐标轴。 
							snap: true, // 坐标轴指示器是否自动吸附到点上
						},
						textStyle: {
							// color: "#fff" //设置文字颜色
						},
						padding: 5, // 提示框浮层内边距,
						formatter: (params)=> {
						        var html = params[0].name + '\n';
						        //资金使用率添加%
						        html +=
						            params[0].marker +
						            params[0].seriesName +
						            ':' +
						            params[0].value +
						            '%'
						        return html;
						}
						// backgroundColor: '#ee6461',
				},
			}
			this.$refs.canvas.init();
		}
	}
}
</script>
// 这里一定要注意 设置该组件宽高 以及display:block来确保canvas初始化的时候是有宽高的
<style>
.uni-ec-canvas{
    width:100%;
    height:100%;
    display:block;
}
</style>

这样的写法formatter自定义是不会生效的;
想要自定义生效的正确写法

this.$refs['canvas'].ec.option={
	tooltip: {
		trigger: 'axis',
		confine: true, //提示框限制在图形内
		axisPointer: {
			type: 'line',
			axis: 'auto', // 指示器的坐标轴。 
			snap: true, // 坐标轴指示器是否自动吸附到点上
		},
		padding: 5, // 提示框浮层内边距,
		formatter: (params)=> {
			var html = params[0].name + '\n';
			//资金使用率添加%
			html +=
				params[0].marker +
				params[0].seriesName +
				':' +
				params[0].value +
				 '%'
				return html;
			}
	},
}

uniapp 如何使用echarts 以及解决tooltip自定义不生效问题,uni-app,echarts,小程序,uni-app,echarts,前端
顺带提一嘴在开发工具上看会有echarts层级太高遮挡显示层问题;这个问题不必理会,真机上显示是正常的
uniapp 如何使用echarts 以及解决tooltip自定义不生效问题,uni-app,echarts,小程序,uni-app,echarts,前端
再使用dataZoom组件的时候会报错e.preventDefault is not a function
解决方法
找到echarts组件的vue文件,我的是 uni-ec-canvas.vue

//在触摸事件加上preventDefault: () => {},
stopImmediatePropagation: () => {},
stopPropagation: () => {}文章来源地址https://www.toymoban.com/news/detail-792004.html

touchStart(e) {
        if (this.ec.stopTouchEvent) {
          e.preventDefault();
          e.stopPropagation();
          return;
        }
        this.$emit("touchstart", e);
        if (this.$curChart && e.touches.length > 0) {
          var touch = e.touches[0];
          var handler = this.$curChart.getZr().handler;
          if (handler) {
            handler.dispatch("mousedown", {
              zrX: touch.x,
              zrY: touch.y,
							//需要添加的方法即可解决dataZoom报错
							preventDefault: () => {},
							stopImmediatePropagation: () => {},
							stopPropagation: () => {}
            });
            handler.dispatch("mousemove", {
              zrX: touch.x,
              zrY: touch.y,
							//需要添加的方法即可解决dataZoom报错
							preventDefault: () => {},
							stopImmediatePropagation: () => {},
							stopPropagation: () => {}
            });
            handler.processGesture(wrapTouch(e), "start");
          }
        }
},

touchMove(e) {
        if (this.ec.stopTouchEvent) {
          e.preventDefault();
          e.stopPropagation();
          return;
        }
        this.$emit("touchmove", e);
        if (this.$curChart && e.touches.length > 0) {
          var touch = e.touches[0];
          var handler = this.$curChart.getZr().handler;
          if (handler) {
            handler.dispatch("mousemove", {
              zrX: touch.x,
              zrY: touch.y,
							//需要添加的方法即可解决dataZoom报错
							preventDefault: () => {},
							stopImmediatePropagation: () => {},
							stopPropagation: () => {}
            });
            handler.processGesture(wrapTouch(e), "change");
          }
        }
},

touchEnd(e) {
        if (this.ec.stopTouchEvent) {
          e.preventDefault();
          e.stopPropagation();
          return;
        }
        this.$emit("touchend", e);
        if (this.$curChart) {
          const touch = e.changedTouches ? e.changedTouches[0] : {};
          var handler = this.$curChart.getZr().handler;
          if (handler) {
            handler.dispatch("mouseup", {
              zrX: touch.x,
              zrY: touch.y,
							//需要添加的方法即可解决dataZoom报错
							preventDefault: () => {},
							stopImmediatePropagation: () => {},
							stopPropagation: () => {}
            });
            handler.dispatch("click", {
              zrX: touch.x,
              zrY: touch.y,
							//需要添加的方法即可解决dataZoom报错
							preventDefault: () => {},
							stopImmediatePropagation: () => {},
							stopPropagation: () => {}
            });
            handler.processGesture(wrapTouch(e), "end");
          }
        }
},

到了这里,关于uniapp 如何使用echarts 以及解决tooltip自定义不生效问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • echarts自定义x轴和tooltip数据格式

    x轴和y轴数据格式如下 修改后xy轴数据格式如下 需求: 将json数据转成折线图需要的数据格式,并且x轴始终为0 - 23 点,并且折线图上的点数不会缺失,对应时间有点位的就展示,没有就空

    2024年01月19日
    浏览(48)
  • vue中echart的tooltip自定义显示内容

    目的:让tooltip显示自定义格式数据,甚至是显示横纵坐标以外的数据。 1. 先介绍一下常用情况 。 tooltip的trigger有三种选项“item”“axis”“none”,选择axis就是显示横坐标的内容。 这样设置,鼠标滑过对应点时,tooltip就会显示横坐标内容和对应纵坐标的温度和信号。 2. 若要

    2024年02月09日
    浏览(43)
  • uniapp 开发微信小程序使用echart的dataZoom属性缩放功能不生效!bug记录!

    在本项目中使用的是这个echart库 在项目中添加了dataZoom配置项但是不生效,突然想到微信小程序代码大小的限制,之前的echarts.js是定制的,有可能没有加dataZoom组件。故重新定制echarts.js。之前用的echarts版本是5.0.0,这次也是定制同样的版本,但是报错,按照之前的经验判断,

    2024年02月11日
    浏览(50)
  • uniapp中APP端使用echarts用formatter设置y轴保留2位小数点不生效

    uniapp使用echarts,在内置浏览器中,设置保留2位小数能正常显示(代码如下),但是在APP端这个设置不起作用。 app端不生效是因为: 在app端,回调函数无法从renderjs外传递,上面的设置使用了回调函数formatter,所以app端不生效。 解决方法 在引用echarts中,有一个初始化的文件

    2024年02月08日
    浏览(49)
  • Echarts图表,利用formatter自定义tooltip的内容和样式

    在展示多数据图表的时候 有的时候需要图例也展示出一些内容来,例如官方这样子:鼠标悬停的时候展示该点数据 但是,官方提供的样式有时不适用所有的开发场景 我的项目需要实现鼠标悬停在某一点的时候,只展示该条线的数据,以及一些图表中未表现的数据。参照原型

    2024年02月11日
    浏览(67)
  • echarts散点图自定义tooltip,鼠标放上去展示多行数据

    先放效果图 如图,就是鼠标悬停在散点上(这里的散点我替换成了图片,具体做法参考这篇文章:echarts散点图的散点用自定义图片替代-CSDN博客)时,可以展示多行数据。之前查找资料的时候,很多用字符串模板的,即{a}{b}{c}之类的,但是经过实践之后发现这种方法对于散点

    2024年04月24日
    浏览(38)
  • 详解:当鼠标放上echarts图形时,显示数据、名称,或者自定义tooltip弹窗

     主要知识点:tooltip{}该配置项为:提示框组件相关设置 写入代码的位置如下,tooltip与xAxis同级 效果一实现代码 效果二实现代码: 更加灵活的自定义弹窗,可以自己写html,其中 params[0].marker 是柱形颜色的圆形,其他参数可以打印 params查看一下 然后拼接进html里 写入代码的位

    2024年02月11日
    浏览(39)
  • mysql如何自定义自增主键值,以及所遇到的不生效问题

    最近有一个需求,要求对某些数据的数据库主键id格式化,要求id为(202311080000)的形式去自增,可以在get请求获取到这些数据时在请求路径上看到格式化的id,但是之前数据id有大于202311080000数值的,导致自增的主键值并没有生效(即使删除相关数据) 如何自定义自增主键值 第一种通过命

    2024年04月15日
    浏览(36)
  • vue echarts kline 在tooltip trigger: ‘axis‘时 自定义参数名已经加振幅参数

    1 trigger: \\\'axis\\\' 报错 Cannot read properties of undefined (reading \\\'1\\\') TypeError: Cannot read properties of undefined (reading \\\'1\\\') at formatter (webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/HelloWorld.vue?vuetype=scriptlang=js:3

    2024年02月13日
    浏览(58)
  • echarts 提示框tooltip被遮挡的解决办法

    当echart的容器外部 dom 被设置为 overflow: hidden 时,提示框会被遮挡。 解决办法: 一、tooltip. confine 这样可以限制提示框在图表的区域内。 二、tooltip. appendToBody 默认值是 false 。 false 表示,tooltip 的 DOM 节点会被添加为本图表的 DOM container 的一个子孙节点。但是这种方式导致,

    2024年02月12日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包