我用过highcharts single line series graph。它似乎工作得很好,但当我调整页面大小(只是为了检查响应性或只是在移动设备上)。价值消失了。我可以在控制台日志中看到错误。
这就是我生成图表的方式
Highcharts.stockChart('nav-chart', {
tooltip: {
pointFormat:"{point.y:.3f}\u20ac"
},
chart: {
type: 'line',
zoomType: 'x',
pinchType: 'x',
panning: false,
<?php if (is_front_page()){ ?>
height: 700,
<?php } else { ?>
height: 500,
events: {
load: updateLegendLabel
}
<?php } ?>
},
updateLegendLabel
有一些生成标签的计算。
var chrt = !this.chart ? this : this.chart;
chrt.update({
legend: {
useHTML: true,
symbolPadding: 0,
symbolWidth: 0,
symbolHeight: 0,
symbolRadius: 0,
labelFormatter: function() {
var lastVal = this.yData[this.yData.length - 1],
chart = this.chart,
xAxis = this.xAxis,
points = this.points,
avg = 0,
counter = 0,
min, max;
... there is some business logic down there
当我调整页面大小时,points
var变为null。为什么会这样?我需要重新更新数据集或什么?
嵌套服务器和客户端逻辑不好。更好的是使用这样的逻辑分离。 Bellow one只是为了想法而不是一个确切的代码。但是,如果您提供将服务器逻辑与客户端逻辑分开的完整代码,则可以修复。
<script>
//before graph area started
var dataA = '<?php echo $dataA;?>';
var dataB = '<?php echo $dataB;?>';
//graph logic started
// your graph code which can use above variables
// but the variable need to be available can be evaluated from your draw script.
</script>
然后在图表脚本中使用这些变量。因为在重新调整浏览器大小时,图形重绘并且在重绘图形时其外观数据不可用。但如果使用上述逻辑,那么每次重绘都可以获得数据