Heim  >  Artikel  >  Web-Frontend  >  So schleifen Sie die Echarts-Komponente in Uniapp

So schleifen Sie die Echarts-Komponente in Uniapp

PHPz
PHPzOriginal
2023-04-20 15:05:071138Durchsuche

Mit der rasanten Entwicklung mobiler Anwendungen und Netzwerkanwendungen wurde in den letzten Jahren die Front-End-Technologie kontinuierlich aktualisiert und es sind einige Frameworks entstanden, mit denen sich problemlos plattformübergreifende, effiziente und schöne mobile Anwendungen erstellen lassen. Unter ihnen ist uniapp eines der angesehensten Frameworks. In Uniapp ist die Echarts-Komponente ein weit verbreitetes Datenvisualisierungstool in der Front-End-Entwicklung. Für Anfänger ist das Schleifen der Echarts-Komponente jedoch ein schwierigeres Problem. Im Folgenden wird in diesem Artikel die Implementierungsmethode der Uniapp-Loop-Echarts-Komponente unter verschiedenen Aspekten wie Komponenten, Slots und Datenverarbeitung vorgestellt.

1. Komponentenverwendung

In Uniapp können wir die Echarts-Komponente über das Tag <ec-canvas> einführen, das auf der offiziellen Website bereitgestellt wird. Die grundlegende Methode zur Verwendung von Komponenten ist wie folgt: <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

Mit dem obigen Code können wir die Echarts-Komponente in Uniapp einführen und das Tag <ec-canvas> verwenden, um einige Attribute von Echarts anzugeben . Wenn Sie jedoch mehrere Echarts-Komponenten in einer Schleife auf der Seite anzeigen möchten, müssen Sie die Methode ändern.

2. Slots verwenden🎜🎜Um die zyklische Anzeige von Echarts-Komponenten zu realisieren, können wir die von uniapp bereitgestellten Slots verwenden. Die spezifische Methode lautet wie folgt: 🎜rrreee🎜Im obigen Beispielcode haben wir v-for verwendet, um chartList zu durchlaufen. Während des Durchlaufs können wir den Wert dynamisch festlegen Für jeden Das <code>canvas-id-Attribut im <ec-canvas>-Tag gibt einen anderen Wert an, um mehrere Echarts-Komponenten zu unterscheiden. Gleichzeitig haben wir @canvasInit verwendet, um auf Ereignisse zu warten, die initChart-Methode auszuführen, wenn jedes <ec-canvas>-Tag initialisiert wird, und das initialisierte Diagramm zu speichern .myChartList. 🎜🎜3. Daten verarbeiten🎜🎜Damit mehrere Echarts-Diagramme unterschiedliche Daten anzeigen, müssen wir die Daten verarbeiten und an die getOption-Methode übergeben, um die unterschiedlichen Daten jedes Diagramms zu konfigurieren. Dieses Ziel können wir durch die Übergabe von Parametern erreichen. 🎜rrreee🎜Im obigen Beispielcode verwenden wir bei der Datenverarbeitung die Methode map() und prüfen, ob der Parameter index mit dem Index von identisch ist Die von der Schleife i durchlaufenen Daten sind gleich. Wenn sie gleich sind, werden die Daten c mit 3 multipliziert, andernfalls wird der ursprüngliche Wert c zurückgegeben. 🎜🎜Durch die oben genannten Schritte können wir das Ziel erfolgreich erreichen, die Echarts-Komponente zyklisch in Uniapp anzuzeigen. Fassen Sie abschließend die Wissenspunkte zusammen, die beherrscht werden müssen: Komponentenverwendung, Steckplätze und Datenverarbeitung. Nur wenn Sie diese Fähigkeiten kompetent beherrschen und kontinuierlich in der Praxis anwenden, können Sie ein exzellenter Front-End-Ingenieur werden. 🎜

Das obige ist der detaillierte Inhalt vonSo schleifen Sie die Echarts-Komponente in Uniapp. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn