一、需求

在Vue3项目中,绘制一个柱状图:

  • 柱状图会展示某一年里四个季度的销售额
  • 提供2个按钮选项,点击不同的按钮可以切换到不同年份的销售额,这里的年份指2022年以及2023年
  • 目标效果如下:
    默认展示的是2023年的数据,点击2022年的按钮可以切换到对应年份的数据并重新渲染图表

在这里插入图片描述

二、实现

1、template代码
  • 在template部分,需要写2个按钮,分别绑定点击事件
  • 点击事件的功能:点击按钮可以切换到不同年份的数据,并更新图表
<template>
  <div class="login">
    <!-- 按钮 -->
    <div class="optionButton">
      <el-radio-group size="small">
        <el-radio-button @click="changeData1">2023</el-radio-button>
        <el-radio-button @click="changeData2">2022</el-radio-button>
      </el-radio-group>
    </div>
    <!-- 图表 -->
    <div class="chart" id="barChart"></div>
  </div>
</template>
2、script部分
  • 总体逻辑如图所示:

在这里插入图片描述

3、点击事件
  • 分别给2个按钮绑定点击事件:点击年份按钮后,图表绑定的数据会切换到对应年份的数据
  • 图表绑定新的数据后,需要重新渲染echarts图表,否则图表不会更新
  • 以按钮1绑定的点击事件为例:
//按钮1绑定的点击事件
function changeData1() {
      selectedData.value = dataAll.value[0].data;
      let myChart = $echarts.init(document.getElementById("barChart"));
      myChart.setOption({
        series: [
          {
            type: "bar",
            barWidth: "35%",
            data: selectedData.value,
          },
        ],
      });
      window.addEventListener("resize", () => {
        myChart.resize();
      });
    }
  • 按钮2绑定的事件更改下面2处地方即可:

在这里插入图片描述

4、初始化echarts图表

在这里插入图片描述

5、图表样式

样式部分此处只做简单展示:

<style lang='less'>
.login {
  height: 4.5rem;
  // 选择按钮
  .optionButton {
    text-align: center;
    margin-top: 1px;
    .el-radio-button__inner {
      background-color: rgb(11, 34, 125); // 按钮的背景颜色
      color: white;
      border: none; //去除边框
      text-decoration: underline; //添加下划线
      text-decoration-color: white; ///* 下划线颜色为红色 */
    }
  }
  .chart {
    height: 4rem;
  }
}
</style>
6、结果
  • 默认展示的是2023年的数据
    在这里插入图片描述

  • 点击“2022年”按钮,图表会切换到2022年的数据并重新渲染图表
    在这里插入图片描述

三、小结

在实现的过程中,出现过按钮已经正常绑定点击事件了,但是数据切换之后,图表没有重新渲染,因此在绑定的点击事件中,还需要让echarts图表重新渲染。

GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐