我的图表是作为对象在后端创建的,并像"{{chart(myChart)}}"一样被推到树枝上。但我需要动态更新其中的数据。所以我创建了新的图表,并通过ajax只将chart->series[0]推送到。
我尝试过update()和setData()方法,但没有成功,我看到"没有数据显示"。奇怪的是,如果我加载相同的对象,数据就会显示出来。
var dchart = $("#myChart").highcharts();
console.log(dchart);
var dp = $('body').find(".date-picker");
dp.datepicker();
dp.on('changeDate', function(e)
{
console.log(e.format('yyyy-m-d'));
$.ajax({
url: 'path',
type: 'POST',
data: { date: e.format('yyyy-m-d') }
}).done(function(msg){
dchart.series[0].setData(msg[0].data);}
我认为您需要像这样重写代码:
dchart.series[0].update({
data: msg[0].data
}, true);
使用
chart.addSeries();
这是一个Fiddle
我认为你应该通知$.ajax()
,数据是JSON格式的,否则你会得到字符串。或者将字符串解析为JSON:
dchart.series[0].setData(JSON.parse(msg[0].data));
我发现问题出在xAxis中。
时间戳中加载的数据超出了初始图表中设置的时间范围。这就是为什么它显示No data to display
。
解决方案是更新xAxis:
dchart.xAxis[0].setExtremes(min, max);