Javascript chartjs-如何在自定义工具提示回调中访问图表实例

Javascript chartjs-如何在自定义工具提示回调中访问图表实例,javascript,chart.js,Javascript,Chart.js,给定: 在下面的示例中,创建了带有实线、虚线和自定义工具提示的折线图 问题 如果受影响的线是实线或虚线,我们如何从自定义回调内部访问?基本上,我想从自定义回调中知道数据集中的属性“borderDash”是否存在 var s1={ 标签:“A”, 数据:[{ x:'2020-05-11T04:58:37Z', y:25, }, { x:‘2020-05-11T04:59:17Z’, y:27, }, { x:'2020-05-11T04:59:57Z', y:21, }, { x:'2020-0

给定: 在下面的示例中,创建了带有实线、虚线和自定义工具提示的折线图

问题 如果受影响的线是实线或虚线,我们如何从自定义回调内部访问?基本上,我想从自定义回调中知道数据集中的属性“borderDash”是否存在

var s1={
标签:“A”,
数据:[{
x:'2020-05-11T04:58:37Z',
y:25,
},
{
x:‘2020-05-11T04:59:17Z’,
y:27,
},
{
x:'2020-05-11T04:59:57Z',
y:21,
},
{
x:'2020-05-11T05:00:37Z',
y:21,
},
{
x:‘2020-05-11T05:01:17Z’,
y:21,
},
{
x:'2020-05-11T05:01:57Z',
y:0.04,
}
],
边界线:[10,5]
};
变量s2={
标签:‘B’,
数据:[{
x:'2020-05-11T04:58:37Z',
y:28,
},
{
x:‘2020-05-11T04:59:17Z’,
y:31,
},
{
x:'2020-05-11T04:59:57Z',
y:27,
},
{
x:'2020-05-11T05:00:37Z',
y:30,
},
{
x:'2020-05-11T05:00:57Z',
y:30,
},
{
x:‘2020-05-11T05:01:17Z’,
y:0.033,
}
]
};
var customTooltips=函数(工具提示){
//** 
//*问题:如果线是虚线或实线,如何获取信息?
//**
//工具提示元素
var tooltipEl=document.getElementById('chartjs-tooltip');
如果(!工具管){
tooltipEl=document.createElement('div');
tooltipEl.id='chartjs tooltip';
tooltipEl.innerHTML='';
这个.u图表.canvas.parentNode.appendChild(工具管道);
}
//如果没有工具提示,则隐藏
如果(tooltip.opacity==0){
tooltipEl.style.opacity=0;
返回;
}
//设置插入符号位置
移除('Upper'、'Down'、'no transform');
如果(工具提示.yAlign){
添加(tooltip.yAlign);
}否则{
tooltipEl.classList.add('no-transform');
}
函数getBody(bodyItem){
返回bodyItem.line;
}
//设置文本
if(tooltip.body){
var titleLines=tooltip.title | |[];
var bodyLines=tooltip.body.map(getBody);
var innerHtml='';
标题行。forEach(函数(标题){
innerHtml+=''+标题+'';
});
innerHtml+='';
bodyLines.forEach(函数(body,i){
var colors=tooltip.labelColors[i];
var style='background:'+colors.backgroundColor;
样式+=';边框颜色:'+colors.borderColor;
样式+=';边框宽度:2px';
var span='';
innerHtml+=''+span+body+'';
});
innerHtml+='';
var tableRoot=tooltipEl.querySelector('table');
tableRoot.innerHTML=innerHTML;
}
var positionY=此。_chart.canvas.offsetTop;
var positionX=此。_chart.canvas.offsetLeft;
//显示、定位和设置字体样式
tooltipEl.style.opacity=1;
tooltipEl.style.left=positionX+tooltip.caretX+'px';
tooltipEl.style.top=positionY+tooltip.caretY+'px';
ToolTipe.style.fontFamily=工具提示。\u bodyFontFamily;
tooltipEl.style.fontSize=tooltip.bodyFontSize+'px';
tooltipEl.style.fontStyle=工具提示。\u bodyFontStyle;
tooltipEl.style.padding=tooltip.yPadding+'px'+tooltip.xPadding+'px';
};
var ctx=document.getElementById('myChart').getContext('2d');
var图表=新图表(ctx{
键入:“行”,
数据:{
数据集:[s1,s2]
},
选项:{
工具提示:{
启用:false,
模式:“索引”,
位置:'最近',
自定义:自定义工具提示
},
比例:{
xAxes:[{
键入:“时间”,
发行:'系列'
}]
},
}
});

在customTooltips功能中,您可以通过此访问数据集。\u data.datasets。然后,您可以在数据集中循环,以查看是否存在borderdash。在下面的示例中,我使用.map创建新数组

let data = this._data.datasets
let borderDash = data.map((item,index) => {
    return {
        label:item.label,
        index,
        borderDash: item.borderDash?true:false
    }  
})

console.log(borderDash)

工作起来很有魅力!谢谢