Javascript 海图太阳暴流图钻取

Javascript 海图太阳暴流图钻取,javascript,highcharts,Javascript,Highcharts,我试图在太阳暴星图上捕捉钻取事件,但我没能实现它 我将事件对象添加到图表对象中,但仍然无法在函数中触发警报 我基本上希望在向下钻取一个或多个级别后,通过单击右上角的按钮进行钻取时触发alert/console.log A在这里供你参考 Highcharts.chart('container', { chart: { height: '100%', events: { drillup: function() {

我试图在太阳暴星图上捕捉钻取事件,但我没能实现它

我将事件对象添加到图表对象中,但仍然无法在函数中触发警报

我基本上希望在向下钻取一个或多个级别后,通过单击右上角的按钮进行钻取时触发alert/console.log

A在这里供你参考

    Highcharts.chart('container', {

      chart: {
        height: '100%',
        events: {
          drillup: function() {
            alert('Drilling up')
          }
        }
      },

      title: {
        text: 'World population 2017'
      },
      subtitle: {
        text: 'Source <href="https://en.wikipedia.org/wiki/List_of_countries_by_population_(United_Nations)">Wikipedia</a>'
      },
      series: [{
        type: "sunburst",
        data: data,
        allowDrillToNode: true,
        cursor: 'pointer',
        dataLabels: {
          format: '{point.name}',
          filter: {
            property: 'innerArcLength',
            operator: '>',
            value: 16
          }
        },
        levels: [{
          level: 1,
          levelIsConstant: false,
          dataLabels: {
            filter: {
              property: 'outerArcLength',
              operator: '>',
              value: 64
            }
          }
        }, {
          level: 2,
          colorByPoint: true
        },
        {
          level: 3,
          colorVariation: {
            key: 'brightness',
            to: -0.5
          }
        }, {
          level: 4,
          colorVariation: {
            key: 'brightness',
            to: 0.5
          }
        }]

      }],
      tooltip: {
        headerFormat: "",
        pointFormat: 'The population of <b>{point.name}</b> is <b>{point.value}</b>'
      }
    });
Highcharts.chart('container'{
图表:{
高度:“100%”,
活动:{
向上钻取:函数(){
警报(“向上钻”)
}
}
},
标题:{
正文:“2017年世界人口”
},
副标题:{
文本:“源维基百科”
},
系列:[{
类型:“太阳风暴”,
数据:数据,
allowDrillToNode:true,
光标:“指针”,
数据标签:{
格式:“{point.name}”,
过滤器:{
属性:“innerArcLength”,
运算符:“>”,
价值:16
}
},
级别:[{
级别:1,
levelIsConstant:false,
数据标签:{
过滤器:{
属性:“outerArcLength”,
运算符:“>”,
数值:64
}
}
}, {
级别:2,
colorByPoint:正确
},
{
级别:3,
颜色变化:{
键:“亮度”,
至:-0.5
}
}, {
级别:4,
颜色变化:{
键:“亮度”,
至:0.5
}
}]
}],
工具提示:{
首字母:“,
pointFormat:“{point.name}的填充为{point.value}”
}
});

请给出建议。

您可以为sunburst.prototype.drillUp方法制作一个包装,并在进行钻取之前或之后添加代码

(function(H) {  
  H.wrap(H.seriesTypes.sunburst.prototype, 'drillUp', function (proceed) {

    console.log("Before drillup.");

    proceed.apply(this, Array.prototype.slice.call(arguments, 1));

    console.log("After drillup.");

  });
})(Highcharts);
包装原型函数文档:

在线演示:

您可以为sunburst.prototype.drillUp方法创建一个包装器,并在钻取发生之前或之后添加代码

(function(H) {  
  H.wrap(H.seriesTypes.sunburst.prototype, 'drillUp', function (proceed) {

    console.log("Before drillup.");

    proceed.apply(this, Array.prototype.slice.call(arguments, 1));

    console.log("After drillup.");

  });
})(Highcharts);
包装原型函数文档:

在线演示:

是否有办法从包装器内部访问父函数?这对我来说是可行的,除了我在父作用域中有一个函数,我想调用
drillUp
,但我不知道如何用这种模式来完成它。你说“父函数”是什么意思?Overwrite
drillUp
方法的另一个示例:是否有从包装器内部访问父函数的方法?这对我来说是可行的,除了我在父作用域中有一个函数,我想调用
drillUp
,但我不知道如何用这种模式来完成它。你说“父函数”是什么意思?另一个使用Overwrite
drillUp
方法的示例: