美文网首页
uniapp中使用mpvue-ehcarts遇到的问题

uniapp中使用mpvue-ehcarts遇到的问题

作者: 刚刚8888 | 来源:发表于2020-06-08 09:44 被阅读0次

背景:在使用uniapp转微信小程序中需要图表展示,但是图表需要使用自定义图形。因此使用了mpvue-echarts插件。

1. 在uniapp小程序中报:this.echarts.setCanvasCreator 找不到响应的函数。

解决方法:替换最新的 mpvue-echarts 组件, 源码地址:链接: https://github.com/dcloudio/hello-uniapp/blob/master/components/mpvue-echarts/src/echarts.vue .拷贝代码替换掉mpvue-echarts目录下的echarts.js中的内容

由于修改的文件在node_modules中,会导致修改后文件只能在本机生效,其他同事或者用户依然会报错。以下有两种方法可解决:
  1.可以将node_modules中mpvue-echarts文件拷贝到项目的组件目录中,修改后,引用组件目录中的插件也可以,但是这种方法会造成打包后文件体积过大。故不推荐。
  2. 可以将node_modules中mpvue-echarts文件拷贝出来,按照上面的方法修改后,再上传到npm上,使用你修改后上传的插件即可。推荐该方法。

2.调用方式:

<template>
    // 调用方式
    <mpvue-echarts canvasId="chat1" @onInit="onInit" ref="chart1" class="ec_canvas"/>
</template>
// onInit方法

<script>
// diy_echart.js是在Echarts官网上按照所需要的模块定制的js,体积会小很多。
import echarts from './diy_echart.js'
import mpvueEcharts from 'uni-mpvue-echarts'
export default {
    //...

    methods: {
        onInit (e) {
            let canvas = this.$refs.chart1.canvas;  
            var option = {
            // 这里参考echarts官网option的配置
            };
            echarts.setCanvasCreator(() => canvas);  
            chart1 = echarts.init(canvas, null, {  
                width: 300,  //width和height根据自己的需求设置
                height: 300  
            });  
            canvas.setChart(chart1);

            chart1.setOption(option);  
            this.$refs.chart1.setChart(chart1);  
        }
    }

}

</script>

  1. 小程序中,若包含原生组件如canvas的元素结构需要可滚动,则原生组件的所有父组件不能使用overflow:hidden或者设置height。否则在安卓上会有canvas悬浮在页面上,不跟随滚动的情况。
image
  1. 在uniapp中使用mpvue-echarts组件,若在该组件外层有scroll-view,在安卓真机上会存在tooltip失效的情况。去掉scroll-view即可。

  2. 在安卓真机上可能会出现cover-view不能覆盖原生的canvas的情况,原因是canvas比cover-view慢。将cover-view延时处理,或者在canvas绘制完成后,再显示cover-view内容即可。

相关文章

网友评论

      本文标题:uniapp中使用mpvue-ehcarts遇到的问题

      本文链接:https://www.haomeiwen.com/subject/hxmvzhtx.html