2017-05-16 3 views
2

Nachdem Sie ein Diagramm wie das Erstellen von (mit Chart.js, neueste Version):Get-Diagramm js Objekt von dem Selektor

var ctx = $('#graph'); 
var graph = new Chart(ctx, { 
    type: 'line', 
    data: someData, 
}); 

Ich möchte das Chart-Objekt in einer anderen Funktion abzurufen, um einige Datenpunkt, um es hinzuzufügen :

var graph = ??? 
graph.data.labels.push(1) 
graph.data.datasets[0].data.push(10); 

Wie bekomme ich das Chart-Objekt?

Vielen Dank im Voraus!

Antwort

2

Sie könnten direkt die Objekt verwenden, ohne sie auf eine andere Variable zuweisen (unter Berücksichtigung eine globale Variable) jede Art von Daten aus einer anderen Funktion hinzuzufügen.

Hier ist ein kurzes Beispiel, dass ...

var ctx = $('#graph'); 
 
var graph = new Chart(ctx, { 
 
    type: 'line', 
 
    data: { 
 
     labels: ["January", "February", "March", "April", "May"], 
 
     datasets: [{ 
 
      label: "Sales", 
 
      data: [1, 2, 3, 4, 5], 
 
      fill: false, 
 
      borderColor: '#07C', 
 
     }] 
 
    } 
 
}); 
 

 
function addData() { 
 
    graph.data.labels.push('June') 
 
    graph.data.datasets[0].data.push(6); 
 
    graph.update(); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script> 
 
<button onclick="addData()">Add Data</button> 
 
<canvas id="graph"></canvas>

bei: die Variable innerhalb einer Funktion ist, dann würde man die Variable globalen machen müssen Um es von einer anderen Funktion zu verwenden

+0

Der Code, in dem ich das Diagramm erstellen, befindet sich in einer 'document.ready'-Funktion, also ist es nicht global. Ich hielt es für eine schlechte Idee, eine Variable im globalen Umfang zu definieren, aber ich konnte sie auf diese Weise lösen. Vielen Dank! –