次のシナリオがあります。オブジェクトのリストを HTML テーブルにバインドし、angularJS の双方向データ バインディングを利用したいと考えています。派手なものはなく、かなり基本的なシナリオです。
2 つの質問があります。
オブジェクトの配列であるモデルの変更を監視している場合、Angular が変更の実際のリストを表示しないのはなぜですか? 私は参照によって比較していません。古い値と新しい値を持ちたくありません。それは私には役に立たないからです。実際に変更された「セル」が必要です。Angular が何らかの diffing を介してダーティ チェックを行っている場合、とにかくそれらの変更を与えることができます。それらの配列の追加の diffing を行う必要はありません。それらが 1000 ~ 2000 のエントリであり、各オブジェクトに少なくとも 10 個の props があると想像してください。 .
自分でパフォーマンスを測定したことがないので、実行する前にあなたに尋ねたいと思います: モデル全体を見て、行ごと、セルごとに比較して、すべてのオブジェクト (データ行) を見るのと比較して、どちらが良いと思いますか?配列で個別に、次にプロップごとに比較しますか?
いずれにせよ、$digest はある種のトランザクション ログを返す必要があると思います。これにより、前/新しい値と、変更が発生したオブジェクトのインデックス (またはキー?) が得られます。
ところで、私も疑問に思っていましたが、角度は主キーなどのキーの概念をサポートしていますか? 配列内の変更されたオブジェクトをインデックスのみで関連付けますか?