如何禁用chartjs legendclick

我想禁用chart.js蜘蛛图表图例点击,因为当我点击图例时,数据系列隐藏了相关的值集,如下图所示。

在此处输入图像描述

在此处输入图像描述

我的要求是我不想禁用数据集。 我试过了preventDefault(); 在图表上单击但它不起作用。

我的代码示例附在下面。 请检查..

   Radar Chart     
var randomScalingFactor = function() { return Math.round(Math.random() * 100); }; var randomColorFactor = function() { return Math.round(Math.random() * 255); }; var randomColor = function(opacity) { return 'rgba(' + randomColorFactor() + ',' + randomColorFactor() + ',' + randomColorFactor() + ',' + (opacity || '.3') + ')'; }; var config = { type: 'radar', data: { labels: ["Eating", "Drinking", "Sleeping", "Designing", "Coding", "Cycling", "Running"], datasets: [{ label: "My First dataset", backgroundColor: "rgba(0,0,0,0.5)", pointBackgroundColor: "rgba(220,220,220,1)", data: [randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor()] }, { label: "My Second dataset", backgroundColor: "rgba(0,120,0,0.5)", pointBackgroundColor: "rgba(151,187,205,1)", hoverPointBackgroundColor: "#fff", pointHighlightStroke: "rgba(151,187,205,1)", data: [randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor()] },] }, options: { legend: { position: 'top', onClick: (e) => e.stopPropagation() }, title: { display: true, text: '' }, scale: { reverse: false, gridLines: { color: ['black'] }, ticks: { beginAtZero: true } } } }; window.onload = function() { window.myRadar = new Chart(document.getElementById("canvas"), config); };

根据文档,有一个onClick处理程序,用于显示事件对象的图例。 如果你停止stopPropagation它会停止隐藏数据系列:

  let chart = new Chart(elem.find('canvas')[0], { type: 'line', data: { labels: [], datasets: [] }, options: { responsive: true, maintainAspectRatio: false, legend: { onClick: (e) => e.stopPropagation() } } }); 

以上是ES6,如果你不使用下面支持的浏览器是较旧的ES5等效。

 legend: { onClick: function (e) { e.stopPropagation(); } } 

Chartjs必须在legend.onClick之后注册自己的click事件,这就是为什么这会阻止它执行。

文档

要覆盖单击图例项的默认行为(即在图表中显示/隐藏关联数据集),您可以使用以下选项(为清晰起见,在options内显示):

 options: { legend: { onClick: function(event, legendItem) {} } } 

这是覆盖默认行为的方法,即通过提供具有相同参数的函数。 根据您的要求,此函数应该有一个空体(因此,立即返回),因为单击图例项时绝对不会发生任何事情。 在文档中查找legend.onClick 。 虽然它目前只出现在两种图表类型下,但此选项应适用于所有图表类型。

此外,您可以使用null或任何评估为false值来禁用所有图例上的click事件。

 options: { legend: { onClick: null } } 

注意:忽略点击事件,方法是点击Chart.js中的以下代码( https://github.com/chartjs/Chart.js/blob/6bea15e7cf89003e3a5945a20cf1d2cc5096728e/src/plugins/plugin.legend.js#L481