我的页面有两个不同的3D饼图,一个是官网示例的3D饼图,一个是使用highcharts.wrap扩展的3D饼图
现在因为用了扩展函数修改了饼图原型上的属性,导致另一个3D饼图也发生了改变,有什么办法可以避免吗
图表里加额外的配置标识,wrap 函数里根据这个标识做判断是否进入扩展的代码逻辑。
例如图表1
let options = {
chart: {
doSomeThing: true
}
}
图表2无需额外配置
wrap 函数
Highcharts.wrap(prototype, 'method', function(proceed) {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
// 注意,这里 this = chart 的条件是 prototype 为 Chart 类,如果其他的,对应的往上找到 chart 对象即可,例如 this 是 Series,则是 this.chart ,可以 console.log(this) 查看获取。
let chart = this;
if(chart.userOptions.chart && chart.userOptions.chart.doSomeThing) {
// do some thing
}
})
感谢感谢,救了大命了