我正在尝试将Highcharts中的以下选项转换为具有多个下钻的多个系列。问题是我已经改变循环以在点上进展以便添加两个向下钻取系列。然而,在我写的循环中,似乎是在经过循环之后,点数组被空值覆盖,这使得整个事情无关紧要。
我是选择的初学者,在花了很多时间之后,我无法破解它。解释和解决方案将是这个问题的理想答案:“如何通过多次下钻来执行以下操作?”这是数据集上的所有异步请求。
我从
开始 options.chart = options.chart || {};
options.chart.events = options.chart.events || {};
var dd = options.chart.events.drilldown || function(e) {};
options.chart.events.drilldown = function(e) {
var chart = this;
chart._drilldowns = chart._drilldowns || {};
var series = chart._drilldowns[e.point.drilldown];
if (series) {
e.seriesOptions = series;
chart.addSeriesAsDrilldown(e.point, series);
dd(e);
}
if (!e.seriesOptions) {
chart.showLoading('Fetching data...');
$.getJSON(
'%(url)s?' + analytics.get_form_data(),
function(drilldowns) {
chart.hideLoading();
chart._drilldowns = drilldowns;
var series = drilldowns[e.point.drilldown];
chart.addSeriesAsDrilldown(e.point, series);
e.seriesOptions = series;
dd(e);
}
);
}
};
''' % {'url': self.get_drilldown_url()}
我试图将第二部分改为:
...
function(drilldowns) {
chart.hideLoading();
chart._drilldowns = drilldowns;
e.points.forEach(function(value, key){
var series = drilldowns[value.drilldown];
chart.addSeriesAsDrilldown(value, series);
})
e.seriesOptions = series;
dd(e);
}
);
}
};
但是我没有把我的系列深入研究。我实际上得到了一个Property xAxis of null is not allowed
错误,就像我第二次经历循环一样,这组点已经变为null。
更新
我们最终使用承诺修复了(实际上是同事!)我们将其设计为等到检索到第一个异步数据请求,然后在每个请求上调用addSingleSeriesAsDrilldown
,直到我们点击最后一个(从图表状态派生),此时我们调用addSeriesAsDrilldown
将applyDrilldown
作为代码的一部分。
答案 0 :(得分:5)
它不是官方API的一部分,但通过这种方式,您可以获得多次下钻:http://jsfiddle.net/p2xw9416/
在最低级别的AJAX请求中(如果您有多个请求),将每个系列添加为单个对象:
chart.hideLoading();
chart.addSingleSeriesAsDrilldown(e.point, series_1);
chart.addSingleSeriesAsDrilldown(e.point, series_2);
chart.applyDrilldown(); // update && animate