0

我有一个升级的应用程序可以使用 ngUpgrade 到目前为止运行良好,但我在尝试合并 Highcharts 时遇到了问题。

原始应用程序包含不同版本的 highcharts(AngularJS 的旧版本)。

使用 Angular 的新(混合记忆)应用程序具有不同版本的 highcharts。

当同时使用它们时,我遇到了错误 #16,Highcharts 已经实例化,这是有道理的。

我的问题是,我该如何避免这种情况?

如果我删除旧的 highcharts,旧的应用程序将不会检测到新的 angular highcharts。如果我删除新的,尝试通过窗口对象访问 highcharts 引用不起作用,因为 highcharts 似乎无法检测到新角度的模板并且不知道如何使用它。

有没有人在应用程序的两个部分(旧的和新的)上组合了一个带有高图的混合应用程序?

4

1 回答 1

1

Highcharts 对象保存在对象的Highcharts属性中Window。Highcharts 检查它是否已在此属性中定义,如果为真则抛出错误 16。

解决方案:

您可以尝试在其他属性中保存 Highcharts 的一个版本并Window.Highcharts在加载其他版本之前清除:

HTML:

<script src="https://code.highcharts.com/4.2.2/highcharts.src.js"></script>
<script>
  this.HighchartsOld = this.Highcharts;
  this.Highcharts = null;
</script>
<script src="https://code.highcharts.com/highcharts.src.js"></script>

<div id="container1" style='height: 200px'></div>
<div id="container2" style='height: 200px'></div>

JS:

var chart = Highcharts.chart('container1', {
  series: [{
    data: [1, 2]
  }]
});

var chart = HighchartsOld.chart('container2', {
  series: [{
    data: [1, 2]
  }]
});

现场演示:http: //jsfiddle.net/BlackLabel/2x7ys9eo/

于 2018-03-01T11:52:18.227 回答