0

ng-repeat に使用される配列の値を変更するたびに、配列内のすべての項目に対して Ng スタイルのディレクティブの関数が起動されます。例を参照し、「getStyle(text)」関数のコンソール ログに注目してください。

http://jsbin.com/panotuyepe/1/edit?html,js,console,output

angularが変更されていないため、配列内の他のすべての値をダーティチェックするのを防ぐ方法はありますか? 変更は、配列リスト内の 1 つの項目のみに分離されました。他の ng-repeated 項目をチェックする必要はありません。

4

2 に答える 2

0

これについて数時間考えた後、これが私が思いついたものです。「入力変更」イベントにバインドするカスタム ディレクティブを作成しました。入力が変更されると、イベントのコールバック関数を介してスコープが更新されます。次に、スコープ チェーンを $parent スコープまでたどり、$digest をトリガーすることで、変更のある行のみのスコープで $digest を起動します。

これは大幅なパフォーマンスの向上です。リストが長い場合、大きな違いが見られます。各「入力変更」イベントは、変更された行のみで、私の ng スタイル関数への 2 つの呼び出しのみをトリガーするようになりました...

http://jsbin.com/daqoxajazu/1/watch?html,js,console,output

他の誰かがより良い解決策を持っている場合は、私に知らせてください。

于 2015-05-04T03:41:42.933 に答える