vue自定义指令使用ecahrts

6 篇文章 0 订阅
本文介绍了如何在Vue项目中通过自定义指令来使用ECharts,详细讲解了在main.js中引入指令以及在组件中应用的方法,帮助开发者更好地理解和集成ECharts图表。
摘要由CSDN通过智能技术生成

一、话不多说上代码:

var echarts = require('echarts');
var options = {
    deep: true,
    // 插入父节点时调用
    inserted: function (el, binding) {
        let myChart = echarts.init(el)
        let option = binding.value
        myChart.showLoading()
        myChart.setOption(option, true)
        myChart.hideLoading()
        let oldResize = window.onresize
        window.onresize = () => {
            oldResize()
        }
        setTimeout(function() {
            myChart.resize();
        }, 0)
    },
    update: function (el, binding) {
        let myChart = echarts.getInstanceByDom(el)
        let option = binding.value
        myChart.showLoading()
        myChart.setOption(option, true)
        myChart.hideLoading()
        let oldResize = window.onresize
        window.onresize = () => {
            oldResize()
        }
        setTimeout(function() {
            myChart.resize();
        }, 0)
    }
};

export {
    options
}

用法:
main.js里引入生成指令

import {
    options
} from './libs/directives/echarts'
// echarts
Vue.directive('echarts', options)

组件里

<template>
      <div v-if="ready" v-echarts="option"> </div>
</template>
<script>
export default {
   data(){
   return {
       ready:false,
       option:""
}
   }
   methods:{
      charts(){
        let  option = {
    tooltip: {
        trigger: 'item',
        formatter: "{a} <br/>{b}: {c} ({d}%)"
    },
    legend: {
        orient: 'vertical',
        x: 'left',
        data:['直接访问','邮件营销','联盟广告','视频广告','搜索引擎']
    },
    series: [
        {
            name:'访问来源',
            type:'pie',
            radius: ['50%', '70%'],
            avoidLabelOverlap: false,
            label: {
                normal: {
                    show: false,
                    position: 'center'
                },
                emphasis: {
                    show: true,
                    textStyle: {
                        fontSize: '30',
                        fontWeight: 'bold'
                    }
                }
            },
            labelLine: {
                normal: {
                    show: false
                }
            },
            data:[
                {value:335, name:'直接访问'},
                {value:310, name:'邮件营销'},
                {value:234, name:'联盟广告'},
                {value:135, name:'视频广告'},
                {value:1548, name:'搜索引擎'}
            ]
        }
    ]
};
this.option = option
this.ready = true
      }
   }
  
}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值