2016-05-27 18 views
0

ng-repeatで複数のD3折れ線グラフを描画しているAngularJS Webアプリケーションがあります。バッキングデータが変更されていなくても、グラフは繰り返し再描画されます。私はすべての再描画イベントを(または可能な限り)抑制したいと思います。再描画からD3.jsを停止する

再描画は無作為に無限ではありません。ページに無関係なものが変わると、再描画がトリガーされます。グラフを裏づけるデータは変化していません。それが私を混乱させます。 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>

+0

あなたはデータソースを処理するために、すべてのrootScopeを使用しています:

これは私がコメントアウト行でしたか? –

+0

私は$ scopeを使用していますが、私のすべてのデータは$ scopeオブジェクトの一つのプロパティか別のものにあります。 – Chris

+0

私はAngularJSの初心者ですが、困ったことをする方法を少しは知っています。私がrootScopeを使用していて、ちょうど$ scopeと呼ばれている可能性があります。私は違いが何であるか分からない。 – Chris

答えて

0

私はangular-chart.jsは、データの変更を監視するように設定ウォッチャーを持っていたことが分かりました。私はこの行をコメントアウトし、ページは現在雷が速いです。私はなぜデータが変更されていると思ったのか分かりませんが、私のグラフは静的なので、問題はありません。

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

関連する問題