javascript - ng升级两个版本的Highcharts,错误16

标签 javascript angular highcharts ng-upgrade

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

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

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

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

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

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

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

最佳答案

Highcharts 对象保存在 Window 对象的 Highcharts 属性中。 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/

关于javascript - ng升级两个版本的Highcharts,错误16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49038467/

相关文章:

javascript - 如何通过多个输入将新对象提交到数组

javascript - Highcharts 堆积范围 z 指数

javascript - hide() show() 后范围选择器输入字段无法编辑

javascript - jQuery.post() 数据不是 "posting"

javascript - 从 GeocoderResult 获取 formatted_address 组件

Angular 2+ 是否可以避免全局 CSS?

javascript - Highcharts 多个图表,每个图表都有实时数据

javascript - jQuery 1.4 change()、复选框和 IE

javascript - 在 Ionic AngularJS 中获取未定义的 ngModel

angular - 扩展 Angular 示意图