vue 数据更新后,echarts图表不更新

vue 数据更新后,echarts图表不更新

用watch监听传递的数据,重新调用渲染图表,echarts中setOption这个方法有三个属性,有的情况下也需要修改
 watch: {
    datas: {
      handler: function () {
        console.log(1);
        this.$nextTick(function () {
          this.drawCharts(this.datas, this.text);
        });
      },
      deep: true,
    },
  },
<!-- 封装环形图组件 -->
<template>
  <div>
    <div class="charts" :id="id"></div>
  </div>
</template>

<script>
import echarts from "echarts";

export default {
  props: ["id", "datas", "text"],
  data() {
    return {
      myChart: null,
    };
  },
    
  watch: {
    datas: {
      handler: function () {
        console.log(1);
        this.$nextTick(function () {
          this.drawCharts(this.datas, this.text);
        });
      },
      deep: true,
    },
  },

  mounted() {
    this.$nextTick(function () {
      this.drawCharts(this.datas, this.text);
    });
  },

  methods: {
    drawCharts(a, b) {
      // 基于准备好的dom,初始化echarts实例
      var myChart = echarts.init(document.getElementById(this.id));

      var option = {
        tooltip: {
          trigger: "item",
        },
        graphic: [
          {
            // 环形图中间添加文字
            type: "text", // 通过不同top值可以设置上下显示
            left: "center",
            top: "35%",
            style: {
              text: b,
              textAlign: "center",
              fill: "#fff", // 文字的颜色
              fontSize: 24,
              fontFamily: "Microsoft YaHei",
            },
          },
        ],
        series: [
          {
            name: "访问来源",
            type: "pie",
            radius: ["60%", "80%"],
            avoidLabelOverlap: false,
            label: {
              show: false,
              formatter: "{d}%",
            },
            labelLine: {
              show: false,
            },
            itemStyle: {
              borderRadius: 10,
              borderColor: "raba(0,0,0,0)",
              borderWidth: 1,
            },
            // 提示框组件,鼠标移动上去显示的提示内容
            tooltip: {
              trigger: "item",
              formatter: "{b}:{c}%", // 模板变量有 {a}、{b}、{c}、{d},分别表示系列名,数据名,数据值,百分比。
            },
            data: a,
          },
        ],
      };
      myChart.setOption(option, true);
    },
  },
};
</script>

<style lang="less" scoped>
.charts {
  width: 400px;
  height: 250px;
}
</style>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值