Angularjs ChartJS折线图导致浏览器崩溃

Angularjs ChartJS折线图导致浏览器崩溃,angularjs,browser,crash,chart.js,Angularjs,Browser,Crash,Chart.js,我正在使用HTTP get-through ngResource和rest API更新折线图。 我的技术是每次用户单击按钮时获取JSON数据集并创建一个新图表。 它工作得很好,但有时会导致浏览器崩溃。我已经在Windows和Linux上测试了Chrome和Firefox 在我的控制器中: $scope.labels = $scope.dataFromREST; $scope.series = ['Series A']; $scope.data = [$scope.dataFromREST2];

我正在使用HTTP get-through ngResource和rest API更新折线图。 我的技术是每次用户单击按钮时获取JSON数据集并创建一个新图表。 它工作得很好,但有时会导致浏览器崩溃。我已经在Windows和Linux上测试了Chrome和Firefox

在我的控制器中:

$scope.labels = $scope.dataFromREST;
$scope.series = ['Series A'];
$scope.data = [$scope.dataFromREST2];
$scope.onClick = function (points, evt) {
    console.log(points, evt);
};
$scope.datasetOverride = [{ yAxisID: 'y-axis-1' }];
$scope.options = {
    scales: {
        yAxes: [
            {
                id: 'y-axis-1',
                type: 'linear',
                display: true,
                position: 'left'

            }
        ],
        xAxes: [{
            responsive: true,
            ticks: {
                autoSkip: true,
                maxTicksLimit: 20
            }
        }]

    }

};
在my index.html中:

<canvas id="line" class="chart chart-line" chart-data="data"
                    chart-labels="labels" chart-series="series" chart-options="options"
                    chart-dataset-override="datasetOverride" chart-click="onClick">
            </canvas>

有没有办法只更新或刷新接收到$scope.dataFromREST数据的折线图,而不是每次都创建一个新的图表对象?(因为我认为,每次创建新图表都会导致崩溃)我看到了“.update()”函数,但我似乎无法让它工作。 我还尝试了“.destroy()”,但浏览器仍会崩溃


我怎样才能摆脱那次撞车?请帮忙

是的,有一种方法可以简单地更新基础chart.js图表数据,而不必每次都重新实例化图表。您只需要使用API中的函数

下面是我在我的一个应用程序中使用的示例(针对您的具体情况进行了修改)。注意,
chart
是我的chart.js对象(从
new chart()返回的内容)…

assembledData = {};
assembledData.data = // data from api call in an acceptable data format that chart.js understands
assembledData.colors = // new color definition for your data so it will update correctly
assembledData.labels = // new label definition for your data so it will update correctly

chart.data.datasets[0].data = assembledData.data;
chart.data.datasets[0].backgroundColor = assembledData.colors;
chart.data.labels = assembledData.labels;
chart.update();

根据图表的表现,您可能不必在每次更新时重新定义
颜色
标签

如果我的答案对您不起作用,请告诉我。如果您说
更新
功能不起作用,请了解您尝试的是哪种方法,这将是一件好事。