2016-04-09 10 views
0

ng-repeatによってビューに結びつけられたオブジェクトの配列を編集したいと思います。 完全なアレイが変更されるまでスコープの更新を避けるにはどうすればよいですか?スコープ変数を編集するときにダイジェストサイクルを回避する方法

私は、アレイ内のすべてのOBJを更新し、その後、ONLY $の範囲を更新したいと思います:ここで

は簡単な例です。配列にはオブジェクトが含まれているため、別の変数で単純にコピーすることはできません。

<div ng-click="updateAll()" ng-repeat="obj in array">obj.value</div> 

angular.module("test", []).controller('Ctrl', function($scope) { 
    $scope.array = [{val: 1}, {val: 2}, {val: 3}); 

    $scope.updateAll = function() { 
     for (var i = $scope.array.length - 1; i >= 0; i--) { 
      $scope.array[i].val2 = i; 
     }; 
    }; 
}); 

答えて

0

あなたの唯一の可能性は、すべての更新が完了するとすぐに別のアレイを編集して元のアレイに設定することだと思います。

+0

私の配列にはオブジェクトが含まれています。私はそれを深くクローンするのが嫌いでしょう(ゲッターのようにデータが緩んでいるかもしれません...) – Sergej

+0

なぜこの動作が必要ですか?あなたはアイテムのリストを表示し、それらを次々とアップデートする可能性を提供しますか?アイテムを保存する前に、ユーザが保存するか、何か類似したものを保存したくないのですか? – kabaehr

+0

これは単にパフォーマンス上の問題です。 1つの更新で十分であれば、すべてのオブジェクトに対して$スコープを150回更新する必要はありません... – Sergej

関連する問題