vue自定義指令使用ecahrts

一、話不多說上代碼:

var echarts = require('echarts');

var options = {

? ? deep: true,

? ? // 插入父節(jié)點時調(diào)用

? ? 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/>: {c} (u0z1t8os%)"

? ? },

? ? legend: {

? ? ? ? orient: 'vertical',

? ? ? ? x: 'left',

? ? ? ? data:['直接訪問','郵件營銷','聯(lián)盟廣告','視頻廣告','搜索引擎']

? ? },

? ? 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:'聯(lián)盟廣告'},

? ? ? ? ? ? ? ? {value:135, name:'視頻廣告'},

? ? ? ? ? ? ? ? {value:1548, name:'搜索引擎'}

? ? ? ? ? ? ]

? ? ? ? }

? ? ]

};

this.option = option

this.ready = true

? ? ? }

? }


}

</script>

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容