访问已创建的Chart.js图表

粘土

我创建了带有如下图表的BarChart:

<canvas id="bar" 
 chart-data="ctrl.barChartData" 
 chart-options="ctrl.barChartOptions" 
 chart-labels="ctrl.barChartLabels" 
 chart-series="ctrl.barChartSeries" 
 chart-click="ctrl.chartClick" 
 class="chart chart-bar">
</canvas>

我已经chartClick基于一些示例编写了一个函数,看起来像这样:

vm.chartClick = function(evt){
        var myBarChart = //how I can obtain a access to my created bar chart?
        var activePoints = myBarChart.getPointsAtEvent(evt);
        console.log("active: "+activePoints);
}

我的问题是:如何获得对我创建的图表的访问权并将其分配给myBarChart

我已经找到Highcharts的解决方案,但是找不到Chart.js

更新:

基于@IBarros提供的链接,我设法编写了以下几行代码:

$scope.$on('chart-create', function (event, chart) {
    //console.log(chart);
    myBarChart = chart;
});

我有2张图表-一张饼图,一张条形图。此外,每个图表可以多次发出该事件,因此我在控制台中打印了7张图表。我的下一个问题是:如何找出我要查找的条形图?

卢卡斯·阿劳霍

在此问题中解释了事件被触发7次的原因:如何获取图表实例?#464

如果在设置数据后设置了选项或其他可选属性,则图表将被销毁并重新创建。这种逻辑使图表的设置每次发生变化时都可以自动更新。

发生这种情况时,您只需更新自己的参考即可。

要找出所需的图表对象,只需在图表对象中查找图表指令ID(或图表类型)。

例:

使用对象作为关联数组

$scope.myCharts = {};

将对象引用保存在关联数组中

$scope.$on('chart-create', function (event, chart) {
    console.log(chart.chart.canvas.id);
    console.log(chart.chart.config.type);
    //If id is the same, reference will be updated
    $scope.myCharts[chart.chart.canvas.id] = chart;
});

通过其指令ID访问图表对象

console.log($scope.myCharts[id]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章