WeChat-Applet + ECharts zur Realisierung eines dynamischen Aktualisierungsprozesses

WeChat-Applet + ECharts zur Realisierung eines dynamischen Aktualisierungsprozesses

Vorwort

Kürzlich stieß ich auf eine Anforderung, nämlich die Aktualisierung des Diagramms in Echtzeit in einem kleinen Programm. Zuerst wählte ich wx-chart, stellte dann aber fest, dass es meinen Anforderungen nicht entsprach. Schließlich entschied ich mich für ECharts, trat dabei aber auch in einige Fallstricke. Durch das Sammeln von Informationen im Internet fand ich es schließlich heraus und zeichnete meinen Implementierungsprozess auf.

Methodenbeispiele

1. Rufen Sie zunächst die offizielle ECharts-Website auf, um das Beispiel herunterzuladen. Kopieren Sie dann die EC-Canvas-Datei und fügen Sie sie in Ihr eigenes Projekt ein:

2. Importiere dann die benötigte Seite und füge sie zu xxx.json hinzu. Achte dabei auf den Pfad. Meine Seiten liegen alle im Ordner „pages“:

"Komponenten verwenden": {
    "ec-canvas": "../../ec-canvas/ec-canvas"
 }

3. Ok, kommen wir zur Sache. Ich zeige Ihnen ein Beispiel für eine Seite mit zwei Diagrammen. Lassen Sie uns zunächst das einfache Layout und den Stil richtig gestalten.

xxx.wxml:

Es müssen zwei Canvas-Boxen bereitgestellt werden:

<Klasse anzeigen="Inhalt">
    <ec-canvas id="mychart-one" canvas-id="mychart-multi-one" ec="{{ ecOne}}"></ec-canvas>
    <ec-canvas id="mychart-two" canvas-id="mychart-multi-two" ec="{{ ecTwo }}"></ec-canvas>
</Ansicht>

xxx.wxss:

.Inhalt {
    Breite: 100 %;
    Hintergrundfarbe: #F2F2F2;
    Überlauf-y: automatisch;
}
#meinchart-eins {
    Position: absolut; 
    oben: 0;
    Höhe: 50%;
    links: 0;
    rechts: 0;
}
#mychart-zwei {
    Position: absolut; 
    oben: 50 %;
    Höhe: 50%;
    links: 0;
    rechts: 0;
}

Beachten Sie hierbei, dass Sie, wenn Sie drei, vier oder mehr Diagramme einfügen möchten, die Höhe des Canvas-Felds festlegen müssen. Andernfalls werden die letzten beiden Diagramme gelöscht! ! Viele offizielle Diagramme hatten keine festgelegte Höhe, also habe ich ein paar Bilder entsprechend den offiziellen eingefügt, aber festgestellt, dass keines davon den gleichen Effekt hatte. Ich war müde und habe lange gesucht, bevor mir klar wurde, dass es ein Stilproblem war. Ich habe einfach für jedes Kästchen eine Höhe von 50 % festgelegt.

4. Okay, jetzt, da alle Vorbereitungen abgeschlossen sind, ist der nächste Schritt der Hauptteil. (Eigentlich denke ich, dass das, was ich geschrieben habe, zu kompliziert ist und voller sich wiederholendem Code ist, aber ich habe im Moment keine Zeit, es zu integrieren. Interessierte Freunde können ihre eigenen Methoden zur Integration schreiben.)

xx.js

Als erstes muss der offizielle Teil am Anfang der Seite eingeführt werden.

importiere * als E-Charts aus „../../ec-canvas/echarts“;

Legen Sie zunächst die Stilkonfiguration fest, die in der Tabelle angezeigt werden soll

Funktion setOption(Diagramm, xDaten, yDaten) {
    const option = {
        Titel:
            Text: 'Test',
            Polsterung: [10, 0, 0, 20],
            Textstil: {
                Schriftgröße: 14,
                Farbe: '#696969'
            },
            oben: „10rpx“
        },
        Hintergrundfarbe: "#fff",
        Farbe: ["#006EFF", "#67E0E3", "#9FE6B8"],
        Animation: falsch,
        Netz: {
            anzeigen:false
        },
        x-Achse:
            Typ: "Kategorie",
            data: xdata, //Die Daten auf der x-Achse sind dynamisch, deshalb übergebe ich sie als Parameter axisLabel: {
                Intervall: 5, //Skala der Intervallanzeige auf der X-Achse, Formatierer: Funktion (Wert) { //Anzeigezeit, var Datum = neues Datum (Wert * 1000);
                    var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
                    var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes());
                    Rückfahrt h + m
                },
                Schriftgröße: 8
            }
        },
        yAchse: {
            x: 'Mitte',
            Maßstab: wahr,
            Typ: "Wert",
            Achsenbezeichnung: {
                Formatierer: Funktion (Wert) {
                var val = Wert / 1000000000 + 'G';
                    Rückgabewert
                }
            }
        },
        Serie: [{
            Typ: "Linie",
            data: ydata, //Die Daten auf der y-Achse sind ebenfalls dynamisch und werden als Parameter übergeben symbol: 'none',
            Linienstil:
                Breite: 1
            }
        }]
    };
    chart.setOption(option)
}

Einige Methoden zum Schreiben von Seiten

Seite({
    Daten: {
        ecoOne: {
            lazyLoad: wahr
        },
        ecZwei: {
            lazyLoad: wahr
        },
        Timer: '' //Da ich in Echtzeit aktualisieren möchte, stelle ich einen Timer ein},
    onLoad: Funktion (Optionen) {
        var _this = dies;
        dies.getOneOption();
        dies.getTwoOption();
        this.setData({ //Jede Minute aktualisieren Timer: setInterval(function () {
                    _this.getOneOption();
                    _this.getTwoOption();
                }, 60000)
        })
    },
    onReady: function () { //Dieser Schritt muss beachtet werden this.oneComponent = this.selectComponent('#mychart-one');  
        diese.twoComponent = diese.selectComponent('#mychart-two');
    },
    beimEntladen: Funktion () {
        Intervall löschen(diese.Daten.Timer)
    },
    init_one: function (xdata, ydata) { // Initialisiere das erste Diagramm this.oneComponent.init((canvas, width, height) => {
            const chart = echarts.init(canvas, null, {
                Breite: Breite,
                Höhe: Höhe
            });
            setOption(Diagramm, X-Daten, Y-Daten)
            dieses.diagramm = Diagramm;
            Renditediagramm;
        });
    },
    init_two: function (xdata, ydata) { // Initialisiere das zweite Diagramm this.storagemaxComponent.init((canvas, width, height) => {
            const chart = echarts.init(canvas, null, {
                Breite: Breite,
                Höhe: Höhe
            });
            setOption(Diagramm, X-Daten, Y-Daten)
            dieses.diagramm = Diagramm;
            Renditediagramm;
        });
    },
    getOneOption: function () { //Dieser Schritt erfordert tatsächlich das Hinzufügen von Daten zum Diagramm var _this = this;
        wx.Anfrage({
            URL: 'https://xxxxxxx.com', //Die Schnittstellenadresse, wo Sie die Datenmethode anfordern: 'POST',
            Kopfzeile: {
                "Inhaltstyp": "Anwendung/json"
            },
            Daten: { // Parameter übergeben, mehr muss dazu nicht gesagt werden ID: xxxx
            },
            Erfolg:Funktion(res){
     //Ich gehe hier davon aus, dass res.xdata und res.ydata die Daten sind, die wir brauchen, also die Daten, die auf der x- und y-Achse angezeigt werden. Denken Sie daran, dass es Arrays sein müssen!
                _this.init_one(res.xdata,res.ydata)
            }
        })  
    },
    //Das zweite Diagramm wird auf die gleiche Weise verarbeitet getTwoOption: function () {  
        var _this = dies;
        wx.Anfrage({
            URL: 'https://xxxxxxx.com', //Die Schnittstellenadresse, wo Sie die Datenmethode anfordern: 'POST',
            Kopfzeile: {
                "Inhaltstyp": "Anwendung/json"
            },
            Daten: { // Parameter übergeben, mehr muss dazu nicht gesagt werden ID: xxxx
            },
            Erfolg:Funktion(res){
                _this.init_two(res.xdata,res.ydata)
            }
        })  
    }
})

Okay, das sind ungefähr die Schritte. Wenn etwas dynamisch geändert werden muss, geben Sie es einfach als Parameter ein. Ich habe hier den Timer in onUnload gelöscht, denn wenn er nicht gelöscht ist, werden Sie feststellen, dass er weiterhin angefordert wird, wenn Sie zu einer anderen Seite springen. Sie müssen den Timer also löschen, bevor Sie diese Seite verlassen. Ich bin kein technischer Experte. Wenn es also einen besseren Weg gibt, hoffe ich, dass Sie mich korrigieren können! Hahaha

Zusammenfassen

Dies ist das Ende dieses Artikels über WeChat Mini Program + ECharts zur Erzielung dynamischer Aktualisierung. Weitere relevante Inhalte zu WeChat Mini Program + ECharts zur dynamischen Aktualisierung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • So verwenden Sie E-Charts im WeChat-Applet
  • Detaillierte Erklärung zur Verwendung der Echarts-Diagrammkomponente im WeChat-Applet
  • Das WeChat-Applet verwendet E-Charts, um Daten abzurufen und Liniendiagramme zu generieren
  • So verwenden Sie ECharts zum asynchronen Laden von Daten im WeChat-Applet

<<:  Detailliertes Tutorial zur Installation von MySQL 8.0 aus dem Quellcode auf CentOS 7.4

>>:  Eine kurze Erläuterung der Unterstützung von Gleitkommaoperationen durch den Linux-Kernel

Artikel empfehlen

Der neue TypeScript-Schnellstart-Übungsbericht des Partners Vue

Inhaltsverzeichnis 1. Bauen Sie mit dem offiziell...

Zusammenfassung gängiger SQL-Anweisungen in MySQL

1. MySQL-Exportdatei: SELECT `pe2e_user_to_compan...

Erklären Sie anhand eines Diagramms, was Web 2.0 ist

Heutzutage sprechen wir oft über Web 2.0. Was als...

So verwenden Sie die HTML 5 Drag & Drop-API in Vue

Die Drag & Drop-API fügt ziehbare Elemente zu...

Lösen Sie das MySQL-Login-1045-Problem unter CentOS

Da die gesamte Anwendung unter CentOS bereitgeste...

MySQL-Abfrageoptimierung: Ursachen und Lösungen für langsame Abfragen

Freunde, die in der Entwicklung tätig sind, insbe...

Verwendung von Docker UI, einem Docker-Visualisierungsverwaltungstool

1. Einführung in DockerUI DockerUI basiert auf de...

HTML-Grammatik-Enzyklopädie_HTML-Sprachgrammatik-Enzyklopädie (unbedingt lesen)

Datenträgerbezeichnung, Eigenschaftsname, Beschre...

So verwenden Sie den Linux-Paste-Befehl

01. Befehlsübersicht Der Einfügebefehl fügt die e...

So implementieren Sie die Paging-Funktion des MyBatis-Interceptors

So implementieren Sie die Paging-Funktion des MyB...

Zusammenfassung der grundlegenden Kenntnisse zur MySql-Datenbank

Inhaltsverzeichnis Grundlegende Datenbankvorgänge...