私は、次のHTMLコードを持って、そのNG-ショーはNGリピートと同じデータにアクセスする必要が気づく:私は二回getFilteredQuestions()
を呼び出していますし、それが必要キャッシュ値
<div ng-repeat="cat in getSelectedCategories()">
<div ng-show="getFilteredQuestions(cat).hasItems">
<div ng-repeat="(promptId, q) in getFilteredQuestions(cat).val">
// nested loop contents
</div>
</div>
</div>
予告まったく同じデータを生成します。実際には、ディスプレイを一貫させたい場合は、まったく同じデータを生成する必要があります。 AngularJSは通常この呼び出しをキャッシュしていますか、同じループで2回使用しているので値をキャッシュするために使用できるトリックがあります。
getFilteredQuestions()
には、$scope
にキャッシュされた値を設定し、getFilteredQuestions()
を呼び出す代わりに、キャッシュされた値を内部ループで読み取ることが考えられます。
いいえ、ありません。$ digestサイクルごとに角括弧が実行され、式呼び出しの結果によってモデルが変更された場合、別の* '$ digest'サイクルが発生する可能性があります。すべての表現のしたがって、これはあなたのテンプレートに入れなければならない種類の論理ではありません。 – Claies
私はClaiesに同意し、フィルタリングの他の方法を見つけようとする必要があります。そのようなテンプレートでインライン化を避けてください – alphapilgrim
申し訳ありませんが、私は元の質問にいくつかの情報を追加しました。 –