скажем, я создаю диаграмму json, которая может выглядеть примерно так:
return jsonify({
chart: {
post_url: '/some/url/'
type: column
},
title: {
text: this is a chart
},
tooltip: {
shared: true
},
xAxis: {
categories: [x[0].strftime('%b %y') for x in arr]
},
plotOptions: {
column: {
stacking: normal
}
}
series: [{
data: [[x.thing for x in month].count(True) for month in arr]
}, {
data: [[x.thing for x in month].count(False) for month in arr]
}]
})
В setOptions я делаю следующее.
Highcharts.setOptions({
plotOptions: {
series: {
cursor: 'pointer',
point: {
events: {
click: function(el) {
$.post(this.chart.post_url + this.category, function(data) {
console.log(data);
});
}
}
}
}
}
});
Однако это не позволяет мне щелкнуть и перейти к URL-адресу сообщения, говоря, что post_url не определен. Поэтому я полагаю, что данные теряются при визуализации графика.
Каким образом это можно сделать?
this
через point.events.click
referres до точечного объекта, а не объект диаграммы. Вы можете this.series.chart.userOptions.chart.post_url
назад к конфигурации диаграммы, используя this.series.chart.userOptions.chart.post_url
например:
point: {
events: {
click: function() {
alert(this.series.chart.userOptions.chart.post_url);
}
}
}
Вот пример скрипки.
Если я правильно понял, вы хотите, чтобы на series.points
URL-адрес, когда вы нажимаете на них? Вам не хватает конечной запятой после определения post_url
и кавычек вокруг значения типа. При этом я бы установил URL-адрес в параметрах series
, а не в параметрах chart
. Тогда вам может потребоваться установить его так:
series: [{
post_url: '/some/url/',
data: [[x.thing for x in month].count(True) for month in arr]
}, {
post_url: '/some/url/',
data: [[x.thing for x in month].count(False) for month in arr]
}]
Затем в событии click:
events: {
click: function(el) {
$.post(this.post_url + this.category, function(data) {
console.log(data);
});
}
Если вы все еще хотите использовать метод chart.post_url
вам нужно исправить опечатки. Демо.