Javascript 未捕获类型错误:无法读取属性';格式';未定义的

Javascript 未捕获类型错误:无法读取属性';格式';未定义的,javascript,chart.js,Javascript,Chart.js,我正在尝试格式化chartjs图表中的数字。我在我的控制台上遇到这个错误,数字在图表上不可见 未捕获的TypeError:无法读取未定义的属性“format” 你可以参考小提琴。小提琴上的第74行 for (var i = 0; i < firstDataSet.data.length; i++) { var firstModel = firstDataSet._meta[Object.keys(firstDataSet._meta)

我正在尝试格式化chartjs图表中的数字。我在我的控制台上遇到这个错误,数字在图表上不可见

未捕获的TypeError:无法读取未定义的属性“format”

你可以参考小提琴。小提琴上的第74行

for (var i = 0; i < firstDataSet.data.length; i++) {
                            var firstModel = firstDataSet._meta[Object.keys(firstDataSet._meta)[0]].data[i]._model;
                            var secondModel = secondDataSet._meta[Object.keys(secondDataSet._meta)[0]].data[i]._model;
                            var thirdModel = thirdDataSet._meta[Object.keys(thirdDataSet._meta)[0]].data[i]._model;
                            var fourthModel = fourthDataSet._meta[Object.keys(fourthDataSet._meta)[0]].data[i]._model;
                            var total = firstDataSet.data[i] + secondDataSet.data[i];
                            var total1 = thirdDataSet.data[i] + fourthDataSet.data[i];
   // Line below is causing the error 


 ctx.fillText(formatter.format(Number(firstDataSet.data[i])) + " ", firstModel.x, firstModel.y + 20); 

                            ctx.fillText((firstDataSet.data[i]) , firstModel.x, firstModel.y + 20);
                            ctx.fillText((secondDataSet.data[i] ) , secondModel.x, secondModel.y + 20);
                            ctx.fillText(total , secondModel.x, secondModel.y - 20);
                            ctx.fillText((thirdDataSet.data[i]) , thirdModel.x, thirdModel.y + 20);
                            ctx.fillText((fourthDataSet.data[i] ) , fourthModel.x, fourthModel.y + 20);
                            ctx.fillText(total1 , fourthModel.x, fourthModel.y - 20);
                            /*if (firstDataSet.data[i] >= secondDataSet.data[i]) {
                                ctx.fillText((firstDataSet.data[i] * 100 / total).toFixed(2) + '%', firstModel.x, firstModel.y + 30);
                            } else {
                                ctx.fillText((secondDataSet.data[i] * 100 / total).toFixed(2) + '%', secondModel.x, secondModel.y + 30);
                            }
                            */
                        }

var formatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  minimumFractionDigits: 2,
  // the default value for minimumFractionDigits depends on the currency
  // and is usually already 2
});
for(var i=0;i=secondDataSet.data[i]){
ctx.fillText((firstDataSet.data[i]*100/总计).toFixed(2)+'%',firstModel.x,firstModel.y+30);
}否则{
ctx.fillText((secondDataSet.data[i]*100/总计).toFixed(2)+'%',secondModel.x,secondModel.y+30);
}
*/
}
var formatter=new Intl.NumberFormat('en-US'{
风格:“货币”,
货币:美元,
最小分数位数:2,
//minimumFractionDigits的默认值取决于货币
//通常已经是2了
});

在调用
新图表
构造函数之前,必须声明
格式化程序
,否则它将
未定义
选项中
作为
新图表
的第二个参数传递

var formatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
  minimumFractionDigits: 2,
  // the default value for minimumFractionDigits depends on the currency
  // and is usually already 2
});

window.myBar = new Chart(ctx, {
  type: 'bar',
  data: data,
  options: options
});

window.myBar=new Chart(ctx…
)之前声明
格式化程序
。就像这样:哦,太好了。如果你可以添加它作为答案,我可以接受它