H.wrap(H.Chart.prototype, 'render', function (proceed) {
var chart = this,
proceed.call(chart);
// Add the mousewheel event to make vertical scroll
H.addEvent(chart.container,'mousewheel', function (event) {
let delta, extr, step, axis = chart.yAxis[0];
let e = chart.pointer.normalize(event);
// Firefox uses e.detail, WebKit and IE uses wheelDelta
delta = e.detail || (e.wheelDelta / 120);
delta = delta < 0 ? 1 : -1;
extr = axis.getExtremes();
const min = extr.min;
const max = extr.max;
const dataMax = extr.dataMax;
if (chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop) && (min > 1 || (min < 1 && delta === 1)) && (max < dataMax || (max >= dataMax && delta === -1))) {
step = (extr.max - extr.min) / 5 * delta;
axis.setExtremes(extr.min + step, extr.max + step, true, false);
}
globalObj.stopEvent(event); // Issue #5011, returning false from non-jQuery event does not prevent default
return false;
});
})
我正在使用ngOndestroy销毁图表,当我再次返回到相同的组件时,先前创建的闭包仍未销毁。当组件被破坏时,我需要删除包装函数。
发布于 2022-06-28 11:14:00
根据@ppotaczek的建议,我删除了Wrap函数,并在创建图表后调用了add函数。
const globalObj = this;
this.highchartRef = Highcharts.ganttChart('container', this.chartOptions, function(chartObj){
globalObj.addMouseWheelEvent(chartObj); //Called my add mouse wheel event
});
https://stackoverflow.com/questions/72372363
复制相似问题