angular.element.scope()有时不返回范围函数

时间:2017-04-18 15:16:41

标签: javascript jquery angularjs angularjs-scope chart.js

我正在使用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。感谢您提供的所有帮助。

0 个答案:

没有答案