【问题标题】:How to ensure proper closing of backbone views如何确保正确关闭主干视图
【发布时间】:2015-03-05 05:19:02
【问题描述】:

我的所有视图都附加了一个关闭函数,

Backbone.View.prototype.close = function()
{
  this.remove();
  this.unbind();

  if (this.closeMe) this.closeMe();
};

在视图内部的 closeMe() 函数中,我调用了主干的 off() 函数,以从模型和集合中删除先前绑定的回调函数。

closeMe: function()
   {     
     if(this.model)
        this.model.off(null, null, this);
     ...
   }

问题是,如果我在初始化函数中有一些变量附加到当前视图,我需要通过 closeMe() 函数来处理它们吗?

 initialize : function(options)
    {
     ...
     this.myVar= options.something;  
    }

【问题讨论】:

    标签: javascript backbone.js memory-management


    【解决方案1】:

    garbage collector 为您完成这项工作。

    垃圾收集器算法将“不再需要一个对象”的定义简化为“一个对象没有其他对象引用它”。如果指向该对象的引用为零,则该对象被视为可垃圾回收。

    当对视图的引用指向它的引用为零时,垃圾收集器将删除该对象。此时,如果对象myVar 没有指向它的引用,垃圾收集器将删除它。

    顺便说一句,我建议使用listenTo 方法而不是on 方法来监听事件,因为这样可以简化您的代码。当您在 Backbone View 上调用 remove 时,从 DOM 中删除一个视图,并在该视图上调用 stopListening 以删除该视图已监听的任何绑定事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多