Maison  >  Article  >  interface Web  >  Comment boucler le composant echarts dans Uniapp

Comment boucler le composant echarts dans Uniapp

PHPz
PHPzoriginal
2023-04-20 15:05:071149parcourir

Ces dernières années, avec le développement rapide des applications mobiles et des applications réseau, la technologie frontale a été continuellement mise à jour et certains frameworks ont émergé qui peuvent facilement créer des applications mobiles multiplateformes, efficaces et esthétiques. Parmi eux, uniapp est l'un des frameworks les plus respectés. Dans Uniapp, le composant echarts est un outil de visualisation de données largement utilisé dans le développement front-end. Cependant, pour les débutants, comment boucler le composant echarts est un problème difficile. Ci-dessous, cet article présentera la méthode d'implémentation du composant Uniapp Loop echarts sous divers aspects tels que les composants, les emplacements et le traitement des données.

1. Utilisation des composants

Dans uniapp, nous pouvons introduire le composant echarts via la balise <ec-canvas> fournie sur le site officiel. La méthode de base d'utilisation des composants est la suivante : <ec-canvas>标签引入echarts组件。而使用组件的基本方法如下:

<template>
  <view class="container">
    <ec-canvas ref="mychart" canvas-id="mychart-canvas" :ec="ec" ></ec-canvas>
  </view>
</template>

<script>
  import * as echarts from '../../deps/echarts';

  export default {
    data() {
      return {
        ec: {
          onInit: initChart
        }
      }
    },
    methods: {
      initChart(canvas, width, height, dpr) {
        const chart = echarts.init(canvas, null, {
          width: width,
          height: height,
          devicePixelRatio: dpr
        });
        chart.setOption(this.getOption());
        return chart;
      },
      getOption() {
        return {
          /* option for echarts */
          series: [{
            type: 'bar',
            data: [5, 20, 36, 10, 10, 20]
          }]
        }
      }
    }
  }
</script>

通过上述代码,我们可以在uniapp中引入echarts组件,并且使用<ec-canvas>标签指定了echarts的一些属性。但是,要想在页面中循环展示多个echarts组件,需要更改方法。

二、使用插槽

为了实现echarts组件的循环展示,我们可以使用uniapp提供的插槽。具体方法如下:

<template>
  <view class="container">
    <view v-for="(item, index) in chartList" :key="index">
      <ec-canvas ref="mychart" :canvas-id="&#39;mychart-canvas&#39; + index" :ec="ec" @canvasInit="initChart(index)"></ec-canvas>
    </view>
  </view>
</template>

<script>
  import * as echarts from '../../deps/echarts';

  export default {
    data() {
      return {
        chartList: [1, 2, 3, 4, 5],
        ec: {},
        myChartList: []
      }
    },
    methods: {
      initChart(index) {
        const that = this
        return (canvas, width, height) => {
          const chart = echarts.init(canvas, null, {
            width: width,
            height: height
          });
          that.myChartList.push(chart)
          chart.setOption(that.getOption(index));
          return chart
        };
      },
      getOption(index) {
        return {
          /* option for echarts */
          series: [{
            type: 'bar',
            data: [5, 20, 36, 10, 10, 20]
          }],
          color: function(params){    
             let colorList = ['#f00', '#0f0', '#00f','#f0f','#0ff','#ff0']
             return colorList[params.dataIndex]
          } 
        }
      }
    }
  }
</script>

在上述示例代码中,我们使用了v-forchartList进行循环遍历,在遍历时可以动态地为每一个<ec-canvas>标签中的canvas-id属性指定一个不同的值,以此来区分多个echarts组件。同时,我们使用了@canvasInit监听事件,在每个<ec-canvas>标签初始化时执行initChart方法,把初始化后的chart存到.myChartList中。

三、处理数据

为了使多个echarts图表展示不同的数据,我们需要处理数据并将其传入getOption方法来配置每个图表数据的不同。我们可以通过传参的方式实现这个目的。

<template>
  <view class="container">
    <view v-for="(item, index) in chartList" :key="index">
      <ec-canvas ref="mychart" :canvas-id="&#39;mychart-canvas&#39; + index" :ec="ec" @canvasInit="initChart(index)"></ec-canvas>
    </view>
  </view>
</template>

<script>
  import * as echarts from '../../deps/echarts';

  export default {
    data() {
      return {
        chartList: [1, 2, 3, 4, 5],
        ec: {},
        myChartList: []
      }
    },
    methods: {
      initChart(index) {
        const that = this
        return (canvas, width, height) => {
          const chart = echarts.init(canvas, null, {
            width: width,
            height: height
          });
          that.myChartList.push(chart)
          chart.setOption(that.getOption(index));
          return chart
        };
      },
      getOption(index) {
        return {
          /* option for echarts */
          series: [{
            type: 'bar',
            data: this.chartList.map((c, i) => index == i ? c * 3 : c)
          }],
          color: function(params){    
             let colorList = ['#f00', '#0f0', '#00f','#f0f','#0ff','#ff0']
             return colorList[params.dataIndex]
          } 
        }
      }
    }
  }
</script>

在上述示例代码中,我们处理数据时使用了map()方法,并且检测参数index是否与循环遍历的数据的下标i相等,如果相等则将数据c乘以3,否则返回原值crrreee

Grâce au code ci-dessus, nous pouvons introduire le composant echarts dans uniapp et utiliser la balise <ec-canvas> pour spécifier certains attributs des echarts. . Cependant, si vous souhaitez afficher plusieurs composants echarts en boucle sur la page, vous devez changer de méthode.

2. Utiliser les slots🎜🎜Afin de réaliser l'affichage cyclique des composants echarts, nous pouvons utiliser les slots fournis par uniapp. La méthode spécifique est la suivante : 🎜rrreee🎜Dans l'exemple de code ci-dessus, nous avons utilisé v-for pour parcourir chartList Pendant le parcours, nous pouvons définir dynamiquement la valeur. pour chaque L'attribut <code>canvas-id dans la balise <ec-canvas> spécifie une valeur différente pour distinguer plusieurs composants echarts. En même temps, nous avons utilisé @canvasInit pour écouter les événements, exécuter la méthode initChart lorsque chaque balise <ec-canvas> est initialisée et enregistrer le graphique initialisé dans .myChartList. 🎜🎜3. Traitement des données🎜🎜 Afin que plusieurs graphiques echarts affichent des données différentes, nous devons traiter les données et les transmettre à la méthode getOption pour configurer les différentes données de chaque graphique. Nous pouvons atteindre cet objectif en passant des paramètres. 🎜rrreee🎜Dans l'exemple de code ci-dessus, nous utilisons la méthode map() lors du traitement des données et vérifions si le paramètre index est le même que l'indice de la donnée parcourue par la boucle i est égale, si égale, la donnée c est multipliée par 3, sinon la valeur d'origine c est renvoyée. 🎜🎜Grâce aux étapes ci-dessus, nous pouvons atteindre avec succès l'objectif d'afficher de manière cyclique le composant echarts dans uniapp. Enfin, résumez les points de connaissances à maîtriser : utilisation des composants, emplacements et traitement des données. Ce n'est qu'en maîtrisant ces compétences et en les appliquant constamment dans la pratique que vous pourrez devenir un excellent ingénieur front-end. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn