Ho il seguente codice che sfrutta la libreria ChartJS.Diagramma a linee di ChartJs ridisegnare il glitch mentre si passa il mouse su
/*assume the tags in the right place */
<canvas id="graph1" width="300" height="300"></canvas>
var ctx = $("#graph1").get(0).getContext("2d");
var myChart = new Chart(ctx).Line(graph1Generator("day"));
... tutto funziona bene, ma dopo aver aggiunto il seguente gestore di eventi per cancellare e ridisegnare la stessa tabella con dati diversi, si verifica un problema tecnico.
weekButton.addEventListener("click", function(){
ctx.clearRect (0, 0, 300, 300);
ctx.canvas.width = 300;
ctx.canvas.height = 300;
myChart = new Chart(ctx).Line(graph1Generator("week"));
Questo codice non ridisegna correttamente il grafico con i nuovi dati, ma quando mi passa il mouse su di esso, lo fa alcuni molto strani "flashback" per il vecchio grafico che avrebbe dovuto cancellare. Questo mi fa credere che non ha cancellato il vecchio.
Penso che funzionerà se riutilizzerai il vecchio oggetto grafico invece di crearne uno nuovo nel gestore eventi. Puoi anche chiamare 'myChart.destroy();' prima di crearne uno nuovo, in alternativa. – Pointy
Come posso riutilizzare il vecchio oggetto grafico con nuovi dati? Mentre i grafici sono gli stessi, hanno diversi tipi di dati. Inoltre, 'myChar.destroy();' sembra duplicare la dimensione del mio grafico dopo ogni evento. Perché sta succedendo? – ApathyBear
Penso solo a 'myChart.Line (graph1generator (" week "));' (o qualsiasi altra cosa che devi fare per i nuovi dati). E invece di cancellare la tela con il tuo codice, lascia che Chart lo faccia: 'myChart.clear();'. (Potrebbe funzionare meglio di '.destroy()'; Non sono sicuro.) – Pointy