2016-04-19 8 views
-1

私はAngularjs新人です。最近私はAngularjsウェブサイトのガイドを読んでいて、いくらか混乱しています。 ngRepeatについてangularjs APIドキュメントでng-repeatレンダリングはどのようにしてフード内で動作しますか?

、それは言う:

あなたは識別子プロパティを持つオブジェクトを使用している場合、あなたは全体ではなく、オブジェクトの識別子で追跡しなければなりません。後でデータをリロードすると、ngRepeatは、コレクション内のJavaScriptオブジェクトが新しいものに置き換えられたとしても、すでにレンダリングされたアイテムのDOMエレメントを再構築する必要はありません。大規模なコレクションの場合、レンダリングのパフォーマンスが大幅に向上します。一意の識別子がない場合は、$ indexで追跡することでパフォーマンスが向上します。

私はこの内容を理解していない:

あなたは後でデータを再ロードすべき、ngRepeatにはJavaScriptを有効にしてオブジェクトの場合でも、それは既にレンダリングしている項目のためのDOM要素を再構築する必要はありませんコレクションは新しいものに置き換えられました。

この文章の意味は?あなたは私に例を挙げることができますか? ありがとうございます!ポイントは、最初の二つである

<div></div> 
<div></div> 
<div></div> 
<div></div> 
<div></div> 

<div></div> 
<div></div> 

次にあなたがこれを取得するには、オブジェクトに3つの要素を追加します。

答えて

-1

ngRepeattrack byの有無にかかわらず動作が変わります。

すると、コレクションの変更:track byなし

角度は、(各DOM要素を破棄して、再度作成)DOMを再構築します。 track by

角度は、各項目のDOM要素を取得し、値を更新。ドキュメントとして

は言った:

大規模なコレクションのために、これはパフォーマンスが大幅にレンダリングが向上します。

この動作は、this articleで実際によく説明されています。

+0

何らかの理由でdownvoted? –

1

ビルドは、このような二つの要素あなたはNG-繰り返してきたと言いますdivはDOMから削除されずに再作成され、再挿入されますが、3つの新しいものだけが追加されます。

オブジェクトの最初の2つの要素が変更されても、その要素は同じままです(つまり、$ indexを推奨します).2つのDOM要素(divs)は、そのまま、内容が置き換えられました。

もちろん、私があなたに与えたミニ例のコンテンツはありませんが、あなたはその点を理解しています。 track by変数をDOMを正しい位置に保持する「接着剤」と考えてください。

関連する問題