在移动设备上触摸图形时发生任何图表"未定义不是对象"错误



使用正在查看AnyChart图形的移动设备时,当您触摸图形时,会引发"未定义不是对象"错误。这种情况发生在iOS上。有人知道是什么导致了这种情况,以及如何解决这个问题吗?我正在使用最新版本8.9.0

我在chrome浏览器上使用iOS 14.4.2,尽管使用Safari时也会出现同样的情况。

以下是生成图表的基本代码:

this.chart = anychart.stock();
var credits = this.chart.credits();
credits.enabled(false);
this.plot = this.chart.plot(0);
this.plot.yScale().ticks().allowFractional(false);
this.plot.yScale().maximumGap(0);
this.plot.yScale().minimumGap(0);
let activeSeries = this.seriesTypeOptions.find(opt => opt.checked);
if (this.selectedRange === 'intra' && activeSeries.ohlc !== undefined) {
activeSeries = this.seriesTypeOptions.find(opt => opt.value === 'area');
}
let data = activeSeries.ohlc ? this.ohlcMapping : this.valueMapping;
this.series = this.plot[activeSeries.value](data); 
this.series.name(this.longName + ' (' + this.symbol + ')');
if (this.mainColor && this.mainColor !== '') {
this.series.stroke(this.mainColor);
this.series.fill(this.mainColor, 0.5);
}
let grouping = this.chart.grouping();
grouping.maxVisiblePoints(700);
if (this.selectedRange !== 'intra') {
switch (this.groupOptions) {
case 'day': {
grouping.levels([
{ unit: 'day', count: 1 },
]);
grouping.forced(true);
break;
}
case 'week': {
grouping.levels([
{ unit: 'week', count: 1 },
]);
grouping.forced(true);
break;
}
case 'month': {
grouping.levels([
{ unit: 'month', count: 1 },
]);
grouping.forced(true);
break;
}
default: {
break;
}
}
}
this.plot.legend().titleFormat('');
this.plot.yAxis().labels().format("{%value}{decimalsCount:0, groupsSeparator:}");
this.plot.crosshair().yLabel().offsetX(-24);
this.plot.xAxis().labels(true);
this.plot.xAxis().minorLabels(true);
this.plot.xAxis().ticks(true);
this.plot.xAxis().minorTicks(true);
this.plot.yGrid().enabled(true);
if (!this.isIndex) {
let volPlot = this.chart.plot(1);
volPlot.legend().titleFormat('');
let volumeSeries = volPlot.column(this.volumeMapping); 
volumeSeries.name('Volume ' + ' (' + this.symbol + ')');
volPlot.crosshair().yLabel().offsetX(-24);
volPlot.height('25%'); 
volPlot.xAxis().labels(false);
volPlot.xAxis().minorLabels(false);
volPlot.xAxis().ticks(false);
volPlot.yGrid().enabled(true);
if (this.mainColor && this.mainColor !== '') {
volumeSeries.stroke(this.mainColor);
volumeSeries.fill(this.mainColor, 0.5);
}
volPlot.yAxis().labels().format("{%value}{decimalsCount:1, scale: (1)(1000)(1000)(1000)|()(K)(M)(B)}");
volPlot.enabled(this.isVolume);
}
//  add indicators
if (this.selectedRange !== 'intra') {
let ind = this.indicatorOptions.filter(o => o.checked);
ind.forEach(i => this.addIndicator(i.type));
}
var scroller = this.chart.scroller();
scroller.area(this.scrollMapping);
scroller.listen('scrollerchange', () => {
let mv = this.chart.getSelectedRange();
this.rangeStartDate = new Date(mv.firstVisible);
this.rangeStopDate = new Date(mv.lastVisible);
});
scroller.enabled(this.isScroller);
let offSet: number = (this.isInfo) ? 425 : 275;
if (this.container !== undefined) {
this.container.nativeElement.style.height = (window.innerHeight - offSet) + 'px';
this.chart.container(this.container.nativeElement);
}
//  draw chart
this.chart.draw();

如果有人遇到同样的问题。忽略图表在移动设备上引发的异常。这解决了我的问题。

我们很高兴地通知您,AnyChart库v8.11.0的新版本可用。现在,股票图表不会在用户点击时出现错误。

相关内容

最新更新