2017-08-12 12 views
0

私はChart.jsを使用しています。私はデータを表示できるグラフを持っています。私はボタン・プレスで交換したい異なるデータセットも持っています。 すべてのデータセットは配列内にあり、私のメソッドと交換するだけです。すべての値を変更したら、update()メソッドを呼び出します。何も起こりません!Chart.js chart.update()メソッドは何も実行していません

私はchar.data.datasets.dataの内容をチェックしましたが、実際には現在のデータが含まれています。唯一のことは、Chart.jsが更新したくないと思われることです。

私はここで何が欠けていますか?

チャートを更新機能:あなたは任意のより多くの情報が必要な場合

let getValues = function(dataset, label) 
{ 
    return firebase.database().ref("/data/" + dataset).once("value").then(function(snapshot) 
    { 
    var amazon = snapshot.val().Amazon; 
    var google = snapshot.val().Google; 
    var facebook = snapshot.val().Facebook; 
    var twitter = snapshot.val().Twitter; 


    chart.data.datasets.data = []; 
    chart.data.labels = []; 
    chart.data.datasets.label = null; 

    chart.data.datasets.data = [amazon, google, facebook, twitter]; 
    chart.data.labels = names; 
    chart.data.datasets.label = label; 
    chart.update(); 
    console.log(chart.data.datasets.data); 
    }); 
} 

私に知らせてください。

答えて

1

chart.data.datasetsは、1つのデータセットではなく、データセットの配列です。 datasetsには、独自のdata属性とlabel属性がありません。むしろ、アレイ内の個々のdatasetはそれ自身のdatalabel属性を持っています。したがって、datasets.dataまたはdataset.labelを使用することはできません。

特定のデータセットの変数dataまたはlabelを更新する場合は、配列からそのオブジェクトを選択する必要があります。あなたはすべてのデータセットを更新したい場合は、

chart.data.datasets[0].data = [amazon, google, facebook, twitter]; 
chart.data.datasets[0].label = label; 

配列を反復処理するforEachループを使用します:最初のデータセットを選択するには、単にdatasets[0]を使用

chart.data.datasets.forEach((dataset) => { 
    dataset.data = [amazon, google, facebook, twitter]; 
    dataset.label = label; 
}); 

つ以上のポイント:

その他の可能性のある問題の1つは、names変数がどこでも初期化されていないことです。ただ、その部分を含めなかった可能性があります彼はあなたの質問に書いています。

また、次の3行のコードですべての値を再割り当てするだけで、次の3行のコードがあるのはなぜですか?

chart.data.datasets.data = []; 
chart.data.labels = []; 
chart.data.datasets.label = null; 
関連する問題