ページグリッド(2つのネストされたng-repeat)を備えたAngularJSアプリがあります。1ページには約25x40の入力要素があります。1000のバインディングを作成した当初は、ページングのパフォーマンスは許容範囲内でした。
しかし、その後、ページの複雑さが増します。動的クラス、さまざまなコンテキストメニュー、グリッドの各セルの条件付きコンテンツ。また、推定6000のバインディング(入力要素ごとに6つ)を使用すると、ページングが使用できなくなりました。
私の質問は、AngularJSのパフォーマンスの問題に一般的にどのようにアプローチするかです。明らかな最初のステップは測定することです。しかし、Chromeプロファイラーの結果は、進め方を知るどころか、それほど多くを教えてくれません。
Self Total Function
-----------------------------------------------------------------
24 ms 2.79 s angular.js:7997 Scope.$digest
1 ms 1 ms controllers.js:365 setViewportData
16 ms 692 ms angular.js:13968 ngRepeatWatch
8 ms 22 ms angular.js:6439 extend.literal
9 ms 1.22 s angular.js:14268 ngSwitchWatchAction
16 ms 45 ms angular.js:12436 ngModelWatch
0 621 ms angular-ui-4.0.js:264 initDateWidget
0 13 ms angular.js:12859 ngClassWatchAction
0 70 ms angular.js:14184 ngStyleWatchAction
1 ms 5 ms angular-ui-4.0.js:261 getOptions
0 16 ms angular.js:579 copy
0 1 ms angular.js:4558 interpolateFnWatchAction
1 ms 2 ms angular.js:5981 token.fn.extend.assign
0 37 ms angular.js:8151 Scope.$eval
1 ms 1 ms angular.js:6137 extend.constant
14 ms 16 ms angular.js:651 equals
1 ms 1 ms angular.js:4939 $interpolate.fn
余談ですが、「Object.observe()」が将来的に処理を高速化する可能性はありますか(「initDateWidget」を無視します。これは明らかに別のトピックです)。