2016-12-05 10 views
0

私はこのような配列があります。サーバーからいくつかのデータを受信した後アップデートのみ差分 - AngularJs

$scope.charts = [ 
    { 
     status: { 
     success: 2, 
     errors: 0 
     } 
    } 
]; 

は、私はチャート配列を更新する必要があります。新しい配列が現在のものとほぼ同じであると仮定すると、テンプレートをすべて再計算するのではなく、どうやって異なるプロパティだけを更新することができますか?このような

newArray = [ 
    { 
     status: { 
     success: 2, 
     errors: 1 
     } 
    } 
]; 

今日I'amやって何か:

$scope.charts = newArray; 

しかし、配列は差がない場合でも、新しい日付が受信されたかのようなテンプレートが点滅し、。

答えて

2

この配列にng-repeatを使用している場合は、IDが付いているtrack by(または同じ場合は$インデックス)を追加すると、既存のアイテムの再レンダリングが妨げられます。

一般的に、常にパフォーマンスの問題を最小限に抑えるために、ng-repeattrack byを追加し、話します。

+1

'track by'は、指定された振る舞いで実際のオブジェクト参照による要素を追跡するデフォルトの動作を無効にします。これがなぜ*このソリューションが機能するかの鍵です。 – mhodges

+2

Eranと@mhodgesありがとう、それは私が探していたものです。 –