1

開発ツールでToDoアプリを見ると、新しいToDo(モデル)が作成されるたびに、AppView内に新しいToDoViewが作成されています。しかし、ToViews の「コレクション」は表示されません。モデルが破棄されるとビューが破棄されると考えているので、これを尋ねていますが、参照が見つかりません。ありがとう

4

1 に答える 1

0

ビューは通常、(DOM 自体のような) メモリ内構造であるため、JavaScript コードがそれらへの参照を保持している限り (したがって、ビューはブラウザーの JS エンジンによるガベージ コレクションの対象外になります)、存在し続けます。ウィンドウを閉じると、それらはなくなります。フルページの読み込みを行う別のページへのリンクをクリックすると、それらはなくなります。

ただし、モデルが破棄されても、ビューは自動的に応答しません。this.listenTo(this.model, 'destroy', this.remove.bind(this))バックボーンを介して削除されたときにモデルをDOMから消したい場合は、これらの線に沿って手動で配線する必要があります。

また、お気づきのように、レンダリングしたいモデルのコレクションがある場合、モデルごとに新しいビューを作成してレンダリングし、それへの参照を保持しないのが一般的です。コレクションが変更されると、最も外側の要素が空になり、新しいビュー インスタンスが作成されてレンダリングされるため、古いビュー インスタンスは自動ガベージ コレクションの対象になります。したがって、javascript はこれらの古いビューのクリーンアップを処理しますが、対応するモデルに影響を与えたり、AJAX リクエストをトリガーしたりすることはありません。

于 2013-03-20T00:31:52.923 に答える