微信小程序使用echarts解决ios图表点击跟页面滑动冲突问题

问题:在ios系统上图表的点击事件会覆盖页面滑动事件,导致在图表上无法滑动,必须在图表外的地方滑动页面(无论那种图表都有问题)

1,准备条件:首先将自定义下载相对应的echarts模块引入到微信小程序中

2,找到ec-canvas.wxml文件源码

3,删除自带的bindtouchstart,bindtouchstart,bindtouchend事件

ec-canvas.wxml

<!-- 新的:接口对其了H5 -->
<canvas wx:if="{{isUseNewCanvas}}" type="2d" class="ec-canvas"  canvas-id="{{ canvasId }}" bindinit="init" ></canvas>
<!-- 旧的 -->
<canvas wx:else class="ec-canvas" canvas-id="{{ canvasId }}" bindinit="init" bindtouchstart="{{ ec.disableTouch ? '' : 'touchStart' }}"  bindtouchend="{{ ec.disableTouch ? '' : 'touchEnd' }}"></canvas>

4,封装方法(因为我们上面是删除了ehcarts自带方法,现在我们需要手写图表触发方法)在utlis.js写入方法

utlis.js

// 触发ehcarts图表方法
EchartsClick(e, id) {
    var query = wx.createSelectorQuery()
    query.select(id).boundingClientRect()
    query.selectViewport().scrollOffset()
    const pages = getCurrentPages();
    const currentPage = pages[pages.length - 1];
    const ecComponents = currentPage.selectComponent(id);
    //  let ecComponents = this.selectComponent(id);
    var handler = ecComponents.chart.getZr().handler;
    query.exec(function (res) {
      let x = e.touches[0].clientX - res[0].left
      let y = e.touches[0].clientY - res[0].top
      handler.dispatch('mousedown', {
        zrX: x,
        zrY: y,
        preventDefault: () => { },
        stopImmediatePropagation: () => { },
        stopPropagation: () => { }
      });
      handler.dispatch('click', {
        zrX: x,
        zrY: y,
        preventDefault: () => { },
        stopImmediatePropagation: () => { },
        stopPropagation: () => { }
      });
    })
  },

5,在使用echats图表的index.js文件里面引入方法

 ---index.wxml

<view class="echarts-container" >
     <ec-canvas  id="threeChar" bind:tap="bindtap1"  style="width: 100%; height: 100%;" ec="{{ ec }}"></ec-canvas>
</view>
  
---index.js

import utils from '../../utils/utils' // 引入方法


bindtap1: function (e) {
    utils.EchartsClick(e, '#threeChar') // 使用方法
  },

结语:有问题可以下面评论或者私信。

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: uniapp 是一种跨平台开发框架,支持多个小程序平台的开发,包括微信小程序。而 echarts 是一种非常强大的数据可视化工具,能够轻松地将数据转化成图形化的展示方式,方便用户进行数据的分析和理解。 在使用 uniapp 开发微信小程序时,可以通过引入 echarts 库的方式,在小程序使用 echarts 进行数据可视化的展示。首先,在 uniapp 中安装 echarts 库,然后在需要使用 echarts页面中引入 echarts 库,可以直接在引入的页面使用 echarts 的 API 进行图表的创建和展示。 同时也需要注意的是,在使用 echarts 进行数据可视化展示时,要根据实际情况选择合适的图表类型,以达到最好的展示效果。另外还需要根据项目的实际需求,对数据进行预处理和格式化,确保数据的准确性和可读性。 总之,使用 uniapp 开发微信小程序使用 echarts 进行数据可视化,并非难事,只需按照 echarts 的 API 进行开发即可。如此一来,开发者便可轻松地创建优美而实用的图表,完美呈现出数据的内在价值。 ### 回答2: uniapp 是一种跨平台开发框架,可以同时支持微信小程序、H5、安卓、iOS等平台。而 Echarts 是一款优秀的数据可视化工具,可以将数据以图表的形式展示出来,支持多种图表类型和交互方式。那么在 uniapp 中如何使用 echarts 呢? 首先,在 uniapp 中引入 echarts 库。可以使用 npm 安装 echarts,也可以直接下载 echarts.js 文件并放置在项目中。 然后,在需要使用 echarts页面或组件中,引入并初始化 echarts。可以在页面或组件的 onReady 或 mounted 生命周期中进行初始化。具体步骤如下: 1. 引入 echarts 库 ``` import * as echarts from 'echarts'; ``` 2. 初始化 echarts ``` onReady() { let myChart = echarts.init(this.$refs.chart); myChart.setOption({...}); // 设置图表的配置项和数据 } ``` 其中,`this.$refs.chart` 是一个 div 元素,用来承载图表。 3. 设置图表的配置项和数据 ``` let option = { title: {...}, legend: {...}, xAxis: {...}, yAxis: {...}, series: {...} }; myChart.setOption(option); ``` 配置项和数据决定了图表的样式和内容,可以根据自己的需求进行设置。 需要注意的是,微信小程序有一些特殊的限制,如不能使用动态的 DOM,因此echarts的一些动态特效不能使用。同时,echarts 也只能显示在固定大小的画布上,不能根据屏幕大小自适应调整。 总结来说,使用 echarts 在 uniapp 中的流程是:引入库、初始化 echarts、设置配置项和数据。需要特别注意微信小程序的限制,对一些动态特效或屏幕适应做出相应的调整。通过这些步骤,可以让我们在 uniapp 中轻松使用 echarts 进行数据可视化。 ### 回答3: 在uniapp中可以使用echarts来实现数据可视化的效果,适用于各种类型的微信小程序。 首先,在uniapp项目中引入echarts组件库,可以使用npm或手动下载方式引入。先安装echarts组件库,然后通过uni_modules目录下的uni-mpvue-router-patch插件引入,最后通过Vue.use()进行注册。 接下来,在需要使用echarts页面引入echarts组件,并使用template标签来编写echarts图表的HTML模板。其中,通过echarts.init()初始化echarts使用option配置项来配置图表的样式和数据。 最后,在vue页面组件中导入数据,并在echarts实例的setOption()方法中更新图表数据。此时,页面中的echarts图表便会根据更新后的数据来重新绘制。 需要注意的是,在使用echarts时,应该了解相关API和样式配置,以便更好地使用其功能,实现所需的数据可视化效果。 总之,通过以上步骤,可以在uniapp微信小程序中实现使用echarts进行数据可视化的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值