1

Backbone.js を使用して現在のアプリケーションを構築しています。

ルートを介したナビゲーションの方法として、次のように html の新しいページ ビューを置き換えます。

//When new route is called, a new view is created and the html is replaced with the new view
view = new Onethingaday.View.NewView()
$(".main_content_container").html view.render().el

この投稿からわかるように、バックボーンを使用している場合はメモリ管理を行う必要があることをオンラインで見つけましたhttps://paydirtapp.com/blog/backbone-in-practice-memory-management-and-event-bindings/

私の質問は

1) 現在のビューは、($(".main_content_container").html view.render().el) を介して新しいビューに置き換えるだけで完全に解放されますか?

2)そうでない場合、すべてのビューを参照する方法はありますか? プログラムコードで手動で解放または削除できるようにするにはどうすればよいですか?

ありがとう

4

1 に答える 1

4

1) いいえ、ビューと関連するイベントは引き続き存在します。もう「見えない」だけです。

2) Derick Bailey は、ビューとページ遷移の処理について優れた説明をしています。彼のウェブサイトで概説されているアプローチは、従うのが簡単で、よく説明されています。

ming yeow のコメントに応えて:

簡単に言えば、ビューはまだ DOM 要素にアタッチされているため、まだ存在しています。を使用してその要素のコンテンツを書き直すことは、要素で and$('#someTag').html(newView.render().el)を呼び出すことと同じではありません。oldView.remove()oldView.unbind()

クリーンアップせずに。を呼び出す$('#someTag').html(newView.render().el)と、(以前と現在の) (ビューとイベント) は引き続き#sometag要素にバインドされます。

これが、新しいビューがそのようにレンダリングされるとき (クリーンアップがないと仮定して) $('#someTag').html(newView.render().el)、あるビュー、別のビュー、別のビューなどに移動すると、複数のイベントとビューが 1 つに関連付けられる理由です。エレメント。

于 2013-01-05T03:16:30.780 に答える