Mam następujący kod wykorzystujący bibliotekę ChartJS.Wykres linii ChartJs odmalowuje błąd podczas unoszenia się nad
/*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"));
... wszystko działa poprawnie, ale po dodaniu następujące obsługi zdarzeń, aby wyczyścić i pomalować ten sam wykres z różnymi danymi, wystąpi usterka.
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"));
Kod ten jest z powodzeniem przerysować wykres z nowymi danymi, ale kiedy unoszą się nad nim, to jednak pewne bardzo dziwne „retrospekcje” starego wykresu, że miało to wyczyścić. To sprawia, że wierzę, że nie oczyściło starego.
Myślę, że zadziała, jeśli ponownie użyjesz starego obiektu wykresu, zamiast tworzyć nowy w module obsługi zdarzeń. Możesz również wywołać 'myChart.destroy();' tuż przed utworzeniem nowego, jako alternatywę. – Pointy
Jak ponownie wykorzystać stary obiekt wykresu z nowymi danymi? Chociaż wykresy są takie same, mają różne typy danych. Ponadto, 'myChar.destroy();' zdaje się duplikować rozmiar mojego wykresu po każdym zdarzeniu. Dlaczego tak się dzieje? – ApathyBear
Myślę, że po prostu 'myChart.Line (graph1generator (" week "));' (lub cokolwiek, co trzeba zrobić dla nowych danych). Zamiast usuwać płótno za pomocą twojego kodu, niech Chart to zrobi: 'myChart.clear();'. (To może działać lepiej niż '.destroy()'; nie jestem pewien.) – Pointy