前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Echarts——VUE中非根节点时不显示图表也无报错

Echarts——VUE中非根节点时不显示图表也无报错

作者头像
思索
发布2024-08-16 15:04:13
700
发布2024-08-16 15:04:13

前言

因为之前的封装都是直接作为根节点封装的,使用this.el,非根组件的时候使用this.refs.xx指定即可

内容

简写

代码语言:javascript
复制
<div ref="container" :id="id" style="height: 165px; width: 100%"></div>

this.chart = echarts.init(this.$refs.container)

完整示例

代码语言:javascript
复制
<template>
    <div>
        <div
            ref="container"
            :id="id"
            style="height: 165px; width: 100%"></div>
        <div>
            <el-row class="device-info">
                <el-col :span="8">
                    <div class="grid-content">
                        <div class="device-num online">6</div>
                        <div class="info-name">设备总数</div>
                    </div>
                </el-col>
                <el-col :span="8">
                    <div class="grid-content">
                        <div class="device-num online">3</div>
                        <div class="info-name">在线数</div>
                    </div>
                </el-col>
                <el-col :span="8">
                    <div class="grid-content">
                        <div class="device-num off">3</div>
                        <div class="info-name">离线数</div>
                    </div>
                </el-col>
            </el-row>
        </div>
    </div>
</template>

<script>
import * as echarts from 'echarts'
export default {
    name: 'dailyEcharts',
    props: {
        id: {
            type: String,
            default: 'chart',
        },
    },
    data() {
        return {
            chart: null,
            options: {},
            pageflag: false,
            data: [
                { value: 3, name: '在线' },
                { value: 3, name: '离线' },
            ],
        }
    },
    watch: {
        options: {
            handler(options) {
                this.chart.setOption(options, true)
            },
            deep: true,
        },
    },
    created() {
        this.getData()
        this.$nextTick(() => {
            this.initChart()
        })
    },
    beforeDestroy() {
        this.chart.dispose()
        this.chart = null
    },
    methods: {
        getData() {
           .....
        },
        initData() {
            this.options = {
                legend: {
                    top: 'bottom',
                    top: 120,
                    textStyle: { color: '#fff' },
                },
                label: {
                    formatter: '{c}个',
                    color: '#fff',
                },
                color: ['#08E690', '#8FD1D2'],
                series: [
                    {
                        type: 'pie',
                        radius: [10, 45],
                        center: ['50%', '30%'],
                        roseType: 'area',
                        data: this.data,
                    },
                ],
            }
        },
        initChart() {
            this.chart = echarts.init(this.$refs.container)
            this.chart.resize()
            this.chart.clear()
            this.chart.setOption(this.options, true)
        },
    },
}
</script>
<style lang="scss" scoped>
...
</style>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 内容
    • 简写
      • 完整示例
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档