13

モデルのクライアント側を削除する最良の方法は何ですか? サーバー側で削除することを心配する必要はありません。すべての落とし穴、すべてのゾンビバインディングを回避して、どこでも削除されるようにするにはどうすればよいですか。すべてを削除して破棄し、モデルが確実にガベージ コレクションされるようにするためのガイドを探しています。

ありがとう!!

4

1 に答える 1

11

それは本当にこのモデルの中に何があるかに依存します。他のインスタンス(ビュー/コレクション/モデル)からのイベントにバインドされている場合は、それらすべてを一度に削除する方法がないため、これらのイベントリスナーを手動で削除する必要があります。

また、Model.destroy()は、コレクション(バックボーンドキュメント)からモデルを削除します。

model.destroy([options])を破棄します

...モデルで「破棄」イベントをトリガーします。これは、モデルを含むすべてのコレクションを介してバブルします...

あなたがしたいと思うかもしれないことは、イベントトリガーとあなたが削除したいものを含む新しいdestroyメソッドを割り当てることです。

destroy: function(options) {
   // Any events you wish to switch off ( if you have any )
   SomeCollection.off('change', this.changeFn);

   Backbone.Model.prototype.destroy.apply(this, options);       
}

モデルからゴミを減らすためのいくつかのパターンにも注意する必要があるかもしれません:

  1. 初期化されたモデルを変数に配置しないでください(コレクションに保持します)。
  2. モデルからイベントがバインドされないようにコードを記述してください(そのためにビュー/コレクションを使用します)。
  3. アプリ内のモデルには最も番号が付けられるため、モデルコードはシンプルにしてください。

これらのルールに従うことで、モデルからのゴミについてそれほど心配する必要がなくなると思います。

于 2012-05-08T07:27:06.363 に答える