2012-05-07 99 views
13

什么是删除模型客户端的最佳方式?我不需要担心在服务器端删除它。我如何确保它在任何地方都被移除,避免每个陷阱,每个僵尸的绑定。我正在寻找一个指导,以消除和摧毁一切,并确保模型是垃圾收集。如何删除骨干模型客户端?

谢谢!

+0

可能的重复http://stackoverflow.com/questions/10400630/remove-a-backbone-model-by-id –

+0

从哪里去?一个集合?该文件?浏览器的内存? – JMM

+0

@JMM是无处不在,避免每一个陷阱,每一个僵尸绑定。我正在寻找一个完整的指南去除和摧毁一切,并确保模型是垃圾收集。 – fancy

回答

11

这真的取决于这个模型里面的东西。如果绑定到来自其他实例的事件 - 视图/集合/模型,则应手动删除这些事件侦听器,因为无法一次删除所有事件侦听器。

此外,Model.destroy()移除在集合模型(骨干文件):

摧毁model.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. 保持您的模型代码简单,因为您的应用中的模型将被编号最多。

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