1

コレクションにいくつかのモデルがあり、それらにイベントがバインドされているビューがあるとします。これをDOMに追加する簡単な方法は、「ワンライナー」を使用することです。

$('body').html(new MyView({ collection: new MyCollection() }).el);

ここで、モデルにはイベントリスナー(CRUD)があり、コレクションにはいくつかあり、ビューにはいくつかあることに注意してください。

これでこのビューは完了です。ビューを変更します。私たちはこのようなことをすることができます。

$('body').html(new MyNextView({ collection: new MyNextCollection() }).el);

このページにはすべての新しい要素がありますが、すべての古い要素はまだ残っています。すべてのオブジェクトからすべてのイベントのバインドを解除する方法が必要です。

これを達成する方法はありますか?

-

すべてのオブジェクトが格納された配列を保持すれば、これが可能になることを私は知っています。このようにして、配列をループし、すべてのオブジェクトからすべてのイベントのバインドを解除できます。匿名で作成されたオブジェクトでこれが可能かどうか疑問に思っています。

4

1 に答える 1

0

ビューの要素を参照できる場合(たとえば、IDがわかっているため)、呼び出す$(el).remove()とDOMからビューが削除され、DOMベースのイベントバインディングが削除されます(ビューがその外部のDOM要素をリッスンしていない場合el) 。 。

ただし、必ずしもメモリから削除されるわけではありません。ビューとコレクションへの他の参照を監視して処理する必要がある場合があります。

于 2012-05-04T22:12:23.943 に答える