2014-05-02 182 views
0

當我們說我生成圖表的JSON可能是這個樣子,其持續任意數據:highcharts;加渲染

return jsonify({ 
    chart: { 
    post_url: '/some/url/' 
    type: column 
    }, 
    title: { 
    text: this is a chart 
    }, 
    tooltip: { 
    shared: true 
    }, 
    xAxis: { 
    categories: [x[0].strftime('%b %y') for x in arr] 
    }, 
    plotOptions: { 
    column: { 
     stacking: normal 
    } 
    } 
    series: [{ 
    data: [[x.thing for x in month].count(True) for month in arr] 
    }, { 
    data: [[x.thing for x in month].count(False) for month in arr] 
    }] 
}) 

在setOptions,我這樣做。

Highcharts.setOptions({ 
     plotOptions: { 
      series: { 
      cursor: 'pointer', 
      point: { 
       events: { 
       click: function(el) { 
        $.post(this.chart.post_url + this.category, function(data) { 
        console.log(data); 
        }); 
       } 
       } 
      } 
      } 
     } 
     }); 

但是,這不允許我點擊並轉到帖子url,說post_url沒有定義。所以我想象圖表渲染時數據會丟失。

這是什麼方法?

回答

3

thispoint.events.click指向一個點對象而不是一個圖表對象。您可以向後步行到使用this.series.chart.userOptions.chart.post_url圖表配置,如下所示:

point: { 
    events: { 
     click: function() { 
       alert(this.series.chart.userOptions.chart.post_url); 
      } 
    } 
} 

下面是一個例子fiddle

0

如果我理解正確,您希望series.points在點擊它們時轉到一個URL?您的post_url定義後面缺少結尾逗號,並且引用了類型值。這就是說我會設置網址series選項,而不是chart選項。這時,你可能需要設置,如:

series: [{ 
    post_url: '/some/url/', 
    data: [[x.thing for x in month].count(True) for month in arr] 
    }, { 
    post_url: '/some/url/', 
    data: [[x.thing for x in month].count(False) for month in arr] 
    }] 

然後在單擊事件:

events: { 
    click: function(el) { 
     $.post(this.post_url + this.category, function(data) { 
     console.log(data); 
     }); 
    } 

Demo.

如果你仍然想使用chart.post_url方法,你需要修復您的錯別字。 Demo