根据Chart.js docs,以下代码应该有效:
new Chart(document.getElementById(chartID), {
type: 'pie',
responsive: true,
maintainAspectRatio: false,
data: {
labels: graph.globals.labels,
datasets: [{
backgroundColor: pieOptions.backgrounds,
data: pieOptions.objToArr(graph.meetingsData),
hoverBorderWidth: 5,
borderColor: 'transparent',
}]
},
options: {
title: {
display: true,
text: graph.globals.title,
},
legend: {
display: true,
position: 'bottom',
fullWidth: false,
onClick: () => {},
labels: {
generateLabels: (chart) => {
return pieOptions.legendLeft(chart);
}
}
},
plugins: [{
beforeInit: function(chart, options) {
console.log('yolo');
}
}]
rotation: 3.9,
}
});
但是,当我使用变量创建插件时,或者如上所示以内联方式创建插件时,它不会记录任何内容。我可以使用插件的唯一方法是在全球注册时。
有人可以向我解释为什么它不起作用吗?
答案 0 :(得分:2)
plugins
应放在自己的配置部分,而不是嵌套在 options
。
而不是:


 选项:{
标题:{
 display:true,
 text:graph.globals.title,
 },
传说:{
 display:true,
位置:'底部',
 fullWidth:false,
 onClick :()=> {},
标签:{
 generateLabels :( chart)=> {
 return pieOptions.legendLeft(chart);
 }
 }
 },
插件:[{
 beforeInit:function(chart,options){
的console.log( 'YOLO');
 }
 }]
轮换:3.9,
}



 您的代码应如下所示:


 选项:{
标题:{
 display:true,
 text:graph.globals.title,
 },
传说:{
 display:true,
位置:'底部',
 fullWidth:false,
 onClick :()=> {},
标签:{
 // generateLabels :( chart)=> {
 // return pieOptions.legendLeft(chart);
 //}
 }
 },
轮换:3.9,
},
插件:[{
 beforeInit:function(chart,options){
的console.log( 'YOLO');
 }
}]



 使用JSFiddle: https://jsfiddle.net/r1x63b8v/