我在我的网站上使用highstock。在股票图表导航器的滚动条是用SVG绘制的。我想添加更多的数据(通过 AJAX )到图形时,用户滚动到最左端。我是SVG的新手,不知道如何检测用户是否已经滚动到最后,并在此基础上触发一个 AJAX 查询。有人能帮助我吗?谢了西瓦库玛。
iezvtpos1#
今天我遇到了同样的问题,我正好找到了你的问题。我不知道您是否有理由只在用户移动滚动条时加载新数据,我建议在用户可视化最左边的数据时触发 AJAX 查询(即:滚动条、按下左箭头、拖动导航图表的区域等)。如果这个解决方案适用于你,你可以尝试这样的东西:
chart = new Highcharts.StockChart({ chart: { renderTo: 'chart', events: { redraw: function(event) { if (chart.xAxis) { var extremes = chart.xAxis[0].getExtremes(); if (extremes && extremes.min == extremes.dataMin) { console.log("time to load more data!"); } } } } }, [...]
qyswt5oh2#
我用下面的方法解决了这个问题。
<script> import axios from 'axios'; export default { name: 'Chart', data() { return { chartOptions: { chart: { events: { // we will lose the context of the component if we define a function here } }, series: [{ type: 'candlestick', data: null, }], }, }; }, methods: { onRedraw: function () { let chart = this.$refs.chart.chart if (chart.xAxis) { let extremes = chart.xAxis[0].getExtremes() console.log(extremes) if (extremes && extremes.min <= extremes.dataMin) { console.log("time to load more data!"); } } } }, created() { axios.get('https://demo-live-data.highcharts.com/aapl-ohlcv.json').then((response) => { this.chartOptions.series[0].data = response.data this.chartOptions.series[0].name = 'AAPL' }); this.chartOptions.chart.events.redraw = this.onRedraw }, }; </script> <template> <highcharts :constructor-type="'stockChart'" :options="chartOptions" ref="chart"></highcharts> </template>
2条答案
按热度按时间iezvtpos1#
今天我遇到了同样的问题,我正好找到了你的问题。
我不知道您是否有理由只在用户移动滚动条时加载新数据,我建议在用户可视化最左边的数据时触发 AJAX 查询(即:滚动条、按下左箭头、拖动导航图表的区域等)。
如果这个解决方案适用于你,你可以尝试这样的东西:
qyswt5oh2#
我用下面的方法解决了这个问题。