スコープを導入した後の設計上の決定の1つは、メモリ管理を容易にすることでした。モデルのスペースをサブパーツ(スコープ)に分割することで、不要なモデル部分(スコープ)を削除し、必要なときに新しいものを追加することができます。そう、はい、スコープは全体のメモリ管理のパズルの重要な一部です。
ng-view
についての特定の質問については、のアクティブビューの有効範囲がのままです。 ng-view
は、スコープ作成(およびスコープ破壊!)指令の1つです。新しいビューがナビゲートされると自動的に新しいスコープが作成され、古いビューに関連付けられたスコープが自動的に破棄されます。これはAngularJS source codeで簡単に確認できます。
考慮する必要があるのは、ネットワーク経由でテンプレートを取得することだけです。あるルートで参照されているテンプレートはすべて$templateCache
にキャッシュされています。あなたのアプリケーションで特定のperfボトルネックに取り組んでいると判断した場合、テンプレートを控えめに退避させることができます。我々は、それがメモリ消費のための時間(ネットワーク時間)であることを認識する必要があります。
簡潔に:ng-view
の独自のスコープ管理を展開する必要はありません。スコープの保持がある場合は、バグとして報告する必要があります。
はい、jsにガベージコレクションがあります。しかし、使用されていると考えられるものは収集しません。角度を指定すると、$スコープはまだ使用されているとみなされます。したがって、スコープは決して収集されません。だから私はそれが収集されることを確認するために私がAngularで何をする必要があるかを尋ねています。 – mfrancis107
「削除」はいつでも使えますか? –
@KGChristensenそれは 'delete'の仕組みではないのですか? – rounce