我正在使用chart.js和angularjs建立财务信息可视化仪表板的网站上工作。可视化的数据从后端查询并存储在页面的角度工厂和控制器上。然后,我的chart.js脚本从控制器调用范围函数以检索当前可视化的数据。
chart.js脚本中的函数如下所示:
function getData() {
if (myChart != null) myChart.destroy();
var scope = angular.element(document.getElementbyId("angular-dashboard-container")).scope();
console.log(scope);
setPieChartData(scope.getPieChartData());
setPieChartLabels(scope.getPieChartLabels());
setPieChartColors(scope.getPieChartColors());
setPieChartID(scope.getPieChartID());
setTimeout(buildChart, 120);
}
angularjs控制器中的函数都具有类似的格式:
$scope.getPieChartData = function() {
return pieChartData;
}
大多数情况下,数据会毫无障碍地传递给chart.js脚本,但在10%到20%的时间内,可视化效果不会出现在屏幕上,并且控制台会返回此错误:< / p>
Uncaught TypeError: scope.getPieChartData is not a function at getData
当我开始将范围对象记录到控制台时,我看到当函数工作时,范围对象列出了页面控制器中的所有范围函数。当函数返回类型错误时,记录的范围对象列出了范围函数的 none 和范围。$ parent(以及一些其他属性)设置为null
。
所以我的问题是我没有得到什么导致脚本不是一直出错,而是一些的时间?作为angularjs的新手,我假设它是关于DOM或者如何构建页面的。
对于上下文,我使用angularjs v1.5.8和chart.js v2.2.2。感谢您提供的所有帮助。