Highcharts - 为甜甜圈中的每个数据添加不同的URL

时间:2016-02-24 09:55:29

标签: highcharts

我使用来自highcharts的圆环饼图,我想为每个数据添加不同的网址。例如

data = [{
  y: 35,
  color: colors[0],
  url: 'http://www.google.com',
  drilldown: {
    name: 'Animals',
    categories: ['Cat', 'Dog', 'Fish'],
    data: [20, 10, 5],
    url: ['http://www.yahoo.com','http://www.facebook.com','http://www.hotmail.com'],
    color: colors[0]
  }
}

网址“http://www.google.com”正常工作,但是在向下钻取的网址不起作用。我把它串联起来

point: {
    events: {
        click: function () {
            location.href = this.options.url;
        }
    }
}

并将其放入数据数组

for (i = 0; i < dataLen; i += 1) {

    // add service data
    servicesData.push({
        name: categories[i],
        y: data[i].y,
        color: data[i].color,
        url: data[i].url
    });

    // add status data
    drillDataLen = data[i].drilldown.data.length;
    for (j = 0; j < drillDataLen; j += 1) {
        brightness = 0.2 - (j / drillDataLen) / 5;
        statusData.push({
            name: data[i].drilldown.categories[j],
            y: data[i].drilldown.data[j],
            color: Highcharts.Color(data[i].color).brighten(brightness).get(),
            url: data[i].drilldown.data[j].url
        });
    }
}

我的错误是什么?

1 个答案:

答案 0 :(得分:1)

在您的内循环(// add status data)中设置:

url: data[i].drilldown.data[j].url

如果您查看data结构,则会发现data[i].drilldown.data[j]没有url属性。 data[j]只是一个简单的数字,而data[i]是一个对象。

快速修复将其更改为:

url: data[i].drilldown.url[j]

或者,您可以重新构建数据,以便内部数据具有与外部数据相同的格式,使它们成为对象。