開発ツールでToDoアプリを見ると、新しいToDo(モデル)が作成されるたびに、AppView内に新しいToDoViewが作成されています。しかし、ToViews の「コレクション」は表示されません。モデルが破棄されるとビューが破棄されると考えているので、これを尋ねていますが、参照が見つかりません。ありがとう
1 に答える
ビューは通常、(DOM 自体のような) メモリ内構造であるため、JavaScript コードがそれらへの参照を保持している限り (したがって、ビューはブラウザーの JS エンジンによるガベージ コレクションの対象外になります)、存在し続けます。ウィンドウを閉じると、それらはなくなります。フルページの読み込みを行う別のページへのリンクをクリックすると、それらはなくなります。
ただし、モデルが破棄されても、ビューは自動的に応答しません。this.listenTo(this.model, 'destroy', this.remove.bind(this))
バックボーンを介して削除されたときにモデルをDOMから消したい場合は、これらの線に沿って手動で配線する必要があります。
また、お気づきのように、レンダリングしたいモデルのコレクションがある場合、モデルごとに新しいビューを作成してレンダリングし、それへの参照を保持しないのが一般的です。コレクションが変更されると、最も外側の要素が空になり、新しいビュー インスタンスが作成されてレンダリングされるため、古いビュー インスタンスは自動ガベージ コレクションの対象になります。したがって、javascript はこれらの古いビューのクリーンアップを処理しますが、対応するモデルに影響を与えたり、AJAX リクエストをトリガーしたりすることはありません。