2016-05-27 4 views
0

У меня есть веб-приложение AngularJS, которое отображает несколько графиков линий D3 в ng-repeat. Графики перерисовываются повторно, даже если данные резервного копирования не изменяются. Я хочу подавить все события перерисовывания (или как можно больше).Остановить D3.js от перерисовки

Перерисовывание не просто беспорядочно. Когда что-то, не связанное на странице, изменяется, происходит перерисовка. Ни одна из данных, поддерживающих график, не меняется, что меня пугает. Похоже, что графики перерисовываются при изменении DOM.

** Edit (добавление фрагментов кода) **

'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>

+0

Вы используете rootScope вообще для обработки источников данных? –

+0

Я использую $ scope, и все мои данные находятся в одном свойстве объекта $ scope. – Chris

+0

Я довольно много начинаю с AngularJS и знаю немного больше, чем то, как попасть в беду. Есть справедливый шанс, что я использую rootScope, и его просто называют $ scope. Я не знаю, в чем разница. – Chris

ответ

0

я узнал, что angular-chart.js имел наблюдател набор, чтобы наблюдать за изменениями данных. Я прокомментировал эту строку, и страница теперь молниеносно. Я не уверен, почему данные думали, что это изменилось, но мои графики статичны, поэтому это не имеет значения.

Это была линия, которую я закомментирована:

scope.$watch('[acChart, acData, acConfig]', init, true);

Смежные вопросы