const config: any = {
type: 'bar',
data: {
localNumberPipe : this.localNumberPipe,
labels: this.labels,
datasets: [{
minBarLength: 5,
maxBarThickness: 50,
label: 'Waterfall Chart',
elements: {
bar: {
backgroundColor: this.color,
borderColor: this.color,
}
},
data: this.data,
borderWidth: 1,
borderSkipped: false
}]
},
options: {
maintainAspectRatio: false,
plugins: {
tooltip: {
callbacks: {
context: {
_this: this,
},
label: function (context) {
var bar = JSON.parse(context.formattedValue);
var label = [];
if (bar) {
var l= this.locale;
const diff = Number.parseFloat(bar[1]) - Number.parseFloat(bar[0]);
label.push('Difference: ' + formatNumber(diff, 'en-US', '1.0-0'));
label.push('Start: ' + formatNumber(bar[0], 'en-US', '1.0-0'));
label.push('End: ' + formatNumber(bar[1], 'en-US', '1.0-0'));
}
return label;
}
}
}
},
scales: {
y: {
beginAtZero: true
}
}
},
plugins: [connectorLines]
};
在构造函数中,我有这样的代码,我在本地得到'an-US'
constructor(private localeService: LocaleService) {
this.localNumberPipe = new LocalNumberPipe(localeService);
Chart.register(...registerables);
**this.locale** = this.localeService.locale ;
console.log(this.locale);
}
但是如果我试图在工具提示回调函数中访问这个.locale,它会返回undefine。是不是跟这个范围有关?如果是这样,有没有办法在图表配置中添加locale作为一个属性,这样我就可以在工具提示回调函数中访问它。
在开发者控制台this返回工具提示详情。
label: function (context) {
var bar = JSON.parse(context.formattedValue);
debugger /// execute this at this stage
感谢您的支持!
1条答案
按热度按时间ki0zmccv1#
如果您确信
this
是创建config
对象时的应用程序,那么您可以使用或者你甚至可以将函数绑定到外部的
this
,只要你不习惯这个方法,因为一般来说 * 在将方法绑定到外部对象时必须非常小心 *:第三种选择是使用箭头函数,它从外部作用域继承
this
: