【发布时间】:2016-05-27 18:12:33
【问题描述】:
我有一个 AngularJS Web 应用程序,它在 ng-repeat 中呈现多个 D3 线图。即使支持数据没有变化,这些图表也会反复重绘。我想禁止所有重绘事件(或尽可能多的)。
重绘不仅仅是随机无限的。当页面上不相关的内容发生变化时,就会触发重绘。支持图表的数据都没有改变,这让我感到困惑。似乎只要 DOM 发生变化,图形就会重绘。
** 编辑(添加代码片段)**
'use strict';
angular.module('alarmAggregator.controllers').controller('HomeCtrl', [
'$scope',
'$routeParams',
'$log',
'Source',
'SaveParameters',
'GetParameters',
'IncidentSearch',
'Waveforms',
'ConfigItems',
'usSpinnerService',
'ImageHelper',
'$http',
'$timeout',
function ($scope, $routeParams, $log, source, saveParameters, getParameters, incidentsSearch, waveforms, configItems, usSpinnerService, imageHelper, $http, $timeout) {
searchService.search($scope.parameters).then(function (result) {
$scope.incidentsList = result.data;
}).finally(function () {
$timeout(function () {
$scope.triggerResizeEvent();
usSpinnerService.stop('search_spinner');
}, 1);
});
<div ng-repeat="inci in incidentsList track by inci.incidentId">
<div ng-repeat="dist in inci.disturbances track by dist.uniqueId">
<div data-ac-chart="'waveform'" data-ac-data="dist.waveforms"></div>
</div>
</div>
【问题讨论】:
-
您是否使用 rootScope 来处理数据源?
-
我正在使用 $scope,我的所有数据都在 $scope 对象的一个或另一个属性中。
-
我几乎是 AngularJS 的新手,只知道如何让自己陷入困境。我很有可能正在使用 rootScope,它只是被称为 $scope。我不知道有什么区别。
-
你能链接代码库来检查吗?
-
很可能由于您正在移动鼠标或其他东西而发生摘要循环,从而调用了您的逻辑。您可以找到有关范围和摘要的更多信息here(虽然不是新手级阅读)。
标签: javascript angularjs d3.js