中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue中如何封裝echarts公共組件

發布時間:2022-05-27 13:59:35 來源:億速云 閱讀:1865 作者:iii 欄目:開發技術

這篇文章主要講解了“vue中如何封裝echarts公共組件”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“vue中如何封裝echarts公共組件”吧!

定義圖表公共樣式是為了統一同一網站各頁面圖表的基礎樣式baseOption.js(軸線、區域、色系、字體),統一封裝后頁面需要直接引入,傳入所需參即可覆蓋基礎樣式。

1、安裝echarts

npm install echarts --save
npm install lodash --save  // 若已安裝請忽略

2、在mian.js中全局引入

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);

3、下面開始封裝圖表

baseOption.js文件:公共樣式定義,為了統一同網站各種圖表的基礎樣式,比如軸線、圖各板塊顏色,值僅供參考):

// baseOption.js
export default {
  color: [
    "#0067E1",
    "#0CC1FF",
    "#00D1B3",
    "#85E814",
    "#FFA082",
  ],
  tooltip: {},
  legend: {
    orient:'horizontal',
    type:'scroll',
    pageIconSize:12,
    pageIconColor:'#aaa', 
    pageIconInactiveColor :'#2f4554',
    pageTextStyle:{
      color:'#999999'
    },
    itemWidth:20,
    itemHeight:12,
    top:0,
    textStyle:{
      color:'#999999'
    },
  },
  grid: {
    top: "13%",
    left: "3%",
    right: "10%",
    bottom: "2%",
    containLabel: true,
  },
  xAxis: [
    {
      axisLine: {
        lineStyle: {
          color: "rgba(65, 97, 128, 0.15)",
          // type: "dashed",
        },
      },
      axisTick: {
        show: false,
      },
      axisLabel: {
        interval:0,
        color: "#rgba(0, 0, 0, 0.25)",
        textStyle: {
          fontSize: 10,
        }
      },
      nameTextStyle:{
        color:'#999999',
        fontSize: 10,
      },
    },
  ],
  yAxis: [
    {
      axisLabel: {
        color: "#rgba(0, 0, 0, 0.25)",
        textStyle: {
          fontSize: 11,
        },
      },
      axisLine: {
        lineStyle: {
          color: "rgba(65, 97, 128, 0.15)",
        },
      },
      splitLine: {
        lineStyle: {
          color: "rgba(65, 97, 128, 0.15)",
        },
      },
      axisTick: {
        show: false,
      },
      nameTextStyle:{
        color:'#999999',
        fontSize: 10,
        padding:[0,20,0,0]
      },
      minInterval: 1
    },
  ],
};

Echart.vue文件:圖本身組件

// Echart.vue
<template>
  <div :id="elId"  />
</template>
<script>
import echarts from "echarts";
import { merge, debounce } from "lodash";
// 引入公共樣式
import baseOption from "./baseOption"
export default {
  data() {
    return {
      elId: "",
      vOption: {
        series: [],
      },
    };
  },
  props: {
    optionData: Object,
  },
  computed: {
    // 合并配置對象
    option() {
      return merge({}, baseOption, this.vOption, this.optionData);
    },
  },
  created() {
    this.elId = this.uuid();
  },
  mounted() {
    // 實例化echarts對象
    this.$nextTick(() => {
      this.initChart();
    });
  },
  beforeDestroy() {
    if (!this.chart) {
      return;
    }
    this.chart.dispose();
    this.chart = null;
  },
  watch: {
    optionData: {
      deep: true,
      handler: function() {
        this.$nextTick(() => {
          this.initChart();
        });
      },
    },
  },
  methods: {
      // 生成唯一uuid做為唯一標識符
    uuid() {
      return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
        var r = (Math.random() * 16) | 0,
          v = c == "x" ? r : (r & 0x3) | 0x8;
        return v.toString(16);
      });
    },
    // 繪圖
    initChart() {
      if(!document.getElementById(this.elId)) return
      this.chart = echarts.init(document.getElementById(this.elId));
      this.chart.setOption(this.option);
      const that = this;
      window.addEventListener(
        "resize",
        debounce(() => {    // 引入debounce,防止頻繁更改瀏覽頁尺寸出現頁面抖動
          if (that.chart) {
            that.chart.resize();
          }
        }, 100)
      );
    },
  },
};
</script>

4、接下來只需要在需要顯示圖表的地方引入Echart.vue

傳入目標數據就可以了,以下示例數據為餅圖:

// index.vue
<template>
  <div class="chartBox">
    <Chart :optionData="chartData"></Chart>
  </div>
</template>
<script>
// 引入Echart.vue組件
import Chart from "./Echart.vue";
export default {
  components: {
    Chart,
  },
  data() {
    return {
      // 圖目標數據
      chartData: {
      	tooltip: {
          show:true,
          trigger:'item',
          formatter: "{b} : {c} (aegqsqibtmh%)",
        },
        xAxis: [{ show: false }],
        yAxis: [{ show: false }],
        series: [
          {
            name: "訪問來源",
            type: "pie", // 餅圖
            radius: ["30%", "45%"], // 餅圖大小
            data: [
              { value: 1048, name: "搜索引擎" },
              { value: 735, name: "直接訪問" },
              { value: 580, name: "郵件營銷" },
              { value: 484, name: "聯盟廣告" },
              { value: 300, name: "視頻廣告" },
            ],
          },
        ],
      },
    };
  },
};
</script>

此時好看的餅圖就出現啦~~

vue中如何封裝echarts公共組件

感謝各位的閱讀,以上就是“vue中如何封裝echarts公共組件”的內容了,經過本文的學習后,相信大家對vue中如何封裝echarts公共組件這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新安县| 灵台县| 河曲县| 凌云县| 东至县| 林西县| 巨鹿县| 绥阳县| 饶河县| 吉木萨尔县| 广汉市| 伊春市| 大埔区| 木兰县| 博湖县| 汤阴县| 兴文县| 正镶白旗| 弋阳县| 宣威市| 栾城县| 宁化县| 湖北省| 丹巴县| 石棉县| 余干县| 长乐市| 山东| 呼玛县| 彭州市| 云梦县| 扬州市| 阳泉市| 镇宁| 宜章县| 广德县| 西丰县| 谢通门县| 凤凰县| 万荣县| 寿光市|