2017-03-10 3 views
0

コンポーネントがng-repeatの中にあり、コンポーネントが(1000を超える)非常に多く作成され、ページの読み込みにかなりの遅延(数秒)が発生することがあります。プロファイラは、目立った遅延を引き起こすすべてのコードが(私のカスタムコンポーネントで使用される)角度または角度選択の範囲内で実行されることを示していますので、自分のコードとは関係ありません。ページ上の同じコンポーネントの角度が1.6のインスタンスが多数ある

これに対処する一般的な方法は何ですか?同じコードを何千回も呼び出さずに、コンポーネントを一度だけ初期化し、複数のインスタンスを作成することは可能ですか?

+1

*コンポーネントを一度だけ初期化し、複数インスタンスを作成することは可能ですか?いいえ。可能であれば、データバインディングを使用しないようにコンポーネントを変更してください。一度に1000個のコンポーネントを表示しないでください。 ng-repeatの代わりにカスタムソリューションを使用します。これは通常行われる方法です。 – estus

+0

あなたのコードを共有してください。どのようにして時計を追加しましたか –

+1

そのようなページネーションまたはスムージングを使用します。なぜ1000のコンポーネントを表示するのですか? – GProst

答えて

0

通常、コンポーネントを一度初期化してクローン化することはできません。純粋に静的なコンポーネントは可能ですが、コンパイルはこのケースのボトルネックにはなりません。

同時に表示する必要があるコンポーネント/ディレクティブインスタンスが多数ある場合は、可能であればデータバインディングを使用しないように変更するか、ワンタイムウォッチャーを使用する必要があります。この方法では、ウォッチャーのカウントは望ましい制限(通常は1000ウォッチャー)内に留まります。

パフォーマンス向上のためにng-repeatの代わりにカスタムソリューションを使用できます。そして、1000個の構成要素を一度に表示すべきでないことが好ましい。

Angularには、可視領域に表示されるアイテムにアイテムを制限する、無限のスクロールソリューションがいくつかあります。

関連する問題