2016-11-18 137 views
0

如何将检索后的值传回数据集数据?目前它的价值是空的。我知道由于数组的初始化var durationChartData返回空,我怎么能更新它,并显示正确的值后,我从ajax的价值?动态更新Chart.js绘制折线图数据集数据

enter image description here

var durationChartData = []; 
var lineChartData = { 
     labels: ["Jan","Feb", "Mar","Apr","May","Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], 
     datasets: [ 
      { 
       label: "My Second dataset", 
       fillColor: "rgba(124,181,236,0.4)", 
       strokeColor: "rgba(124,181,236,1)", 
       pointColor: "rgba(151,187,205,1)", 
       pointStrokeColor: "#fff", 
       pointHighlightFill: "#fff", 
       pointHighlightStroke: "rgba(151,187,205,1)", 
       data: [durationChartData[0],durationChartData[1],durationChartData[2],durationChartData[3],durationChartData[4],durationChartData[5],durationChartData[6],durationChartData[7],durationChartData[8],durationChartData[9],durationChartData[10],durationChartData[11]] 
      } 
     ] 
    }; 
window.onload = function(){ 
    $.ajax({ 
     url: '/rest/analytical/home/viewed/line', 
     type: 'GET', 
     dataType: 'json', 
     success: function (data) { 
      dataLength = (data + '').length; 
      for(var i=0; i<dataLength; i++){ 
      durationChartData[i] = data.ret[i].all; 
      } 
     }, 
     error: function (data) { 
      console.log('duration Chart Data: ' + data); 
     } 
    }); 

    var linegraph = document.getElementById("linegraph"); 
    var bargraph = document.getElementById("bargraph"); 

    if(linegraph !== null){ 
     var ctx = linegraph.getContext("2d"); 
     window.myLine = new Chart(ctx).Line(lineChartData, { 
      tooltipTemplate: "<%if (label){%><%=label%>: <%}%><%= value %> min", 
      responsive: true 
     }); 
    }; 

回答

2

更改来自Ajax响应接收数据集的一部分,然后调用图表的update()功能。这是通过在$ .ajax成功函数结尾添加2行完成的。

$.ajax({ 
     url: '/rest/analytical/home/viewed/line', 
     type: 'GET', 
     dataType: 'json', 
     success: function (data) { 
      dataLength = (data + '').length; 
      for(var i=0; i<dataLength; i++){ 
      durationChartData[i] = data.ret[i].all; 
      } 

      window.myLine.data.datasets[0].data = durationChartData; 
      // 1.x compatible answer (comment out line above): 
      // for(i=0; i <durationChartData.length; i++) { 
      // window.myLine.datasets[0].points[i].value = durationChartData[i]; 
      // } 
      window.myLine.update();     
     }, 
     error: function (data) { 
      console.log('duration Chart Data: ' + data); 
     } 
    }); 
+1

另外,这个解决方案仍然可以工作,但是您使用的构造函数表明您仍在使用库的版本1.x。考虑升级到2.x. –

+0

我试过这个,但没有运气,结果保持不变。 window.myLine.lineChartData.datasets [0] .data = durationChartData; window.myLine.update(); –

+0

你能指点我2.x chart.js或任何代码参考的正确方向吗? –