如何删除客户端的骨干模型?

fan*_*ncy 13 javascript backbone.js

删除模型客户端的最佳方法是什么?我不需要担心在服务器端删除它.我如何确保它被移除到处,避免每个陷阱,每个僵尸绑定.我正在寻找删除和销毁所有内容并确保模型被垃圾收集的指南.

谢谢!!

dri*_*hev 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);       
}
Run Code Online (Sandbox Code Playgroud)

也许您还应该了解一些模型中减少垃圾的模式:

  1. 不要将初始化的模型放在变量中(将其保存在集合中);
  2. 确保编写代码的方式是没有事件与模型绑定(使用视图/集合);
  3. 保持您的模型代码简单,因为您的应用程序中的模型将编号最多.

我认为通过遵循这些规则,您不必太担心模型中的垃圾.