javascript - amCharts 中标签的点击事件

标签 javascript amcharts

我正在处理 amCharts 圆环图。

以下是创建图表的脚本。

JS

var chart = AmCharts.makeChart( "chartdiv", {
  "type": "pie",
  "pullOutDuration":0.5,
 "pullOutRadius": "5",
 "theme": "light",
 "dataProvider": [ {
   "title": "Aaa",
   "value": 10,
 }, {
   "title": "Bbb",
   "value": 10,
 },{
   "title":"Ccc",
   "value":10,
 },{
   "title":"Ddd",
   "value":10,
 },{
   "title":"Eee",
   "value":10,
 }],
 "titleField": "title",
 "valueField": "value",
 "labelRadius": 50,

 "radius": "35%",
 "innerRadius": "85%",
 "labelText": "[[title]]",
 "export": {
   "enabled": true
 },
 "baseColor":"#7a4436",
 "pullOutOnlyOne":true,
 "startEffect":"easeOutSine",
 "pullOutEffect":"easeOutSine",
 "showBalloon":false,
 "listeners": [{
     "event": "clickSlice",
     "method": function(e) {
          var dp = e.dataItem.dataContext;
          alert(dp.title + ':'+dp.value)

          e.chart.validateData();
     }
   }]
});

enter image description here

我能够为图表的每个切片提供点击事件监听器。

但是我想为每个切片的标签添加一个点击事件。因此,在我的示例中,标签 AaaBbb 等的点击事件。

编辑

或者如何给这些标签一个anchor标签??

Here is the working fiddle demo

最佳答案

通常,clickSlice 的监听器只附加到 wedge 和标签上的小 tick,而不是标签本身。

不过,您可以使用以下代码片段手动执行此操作:

chart.addListener("init", function() {
    var d = chart.chartData;
    for (var i = 0; i < d.length; i++) {
        d[i].label.node.style.pointerEvents = "auto";
        chart.addEventListeners(d[i].labelSet, d[i]);
    }
});

因为标签有 pointer-events样式自动分配给 none,您必须将其改回,以便可以注册鼠标事件。然后,您可以使用图表提供的方法手动将监听器添加到 svg 元素。

您必须在图表初始化后执行此操作。但是,如果您想在处理程序中保留 e.chart.validateData() 调用,则必须监听不同的事件(如 drawn )。

如果 e.chart.validateData() 的目的是阻止切片被拉出,那么更好的方法是使用 pullOutRadius: 0

这是一个 demo .

关于javascript - amCharts 中标签的点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38758751/

相关文章:

javascript - 有没有办法告诉 Ember.js 应用程序在哪个环境(开发/生产)中运行?

javascript - 更改多个对象上同一字段的值 - JS

javascript - amcharts:如何在工具提示中添加操作

javascript - 如何在 AmCharts 中将漏斗图旋转 90 度?

javascript - amCharts 不平衡

Javascript 数组引用

javascript - 单击触发按钮在“阅读更多”和“阅读更少”按钮中不起作用

javascript - amcharts 的 stockchart - 如何为图表设置多种颜色

javascript - 获取 CSS 背景图片的像素颜色

mysql - 在 AmCharts 中显示数据库中的数据