2012-05-04 57 views
1

比方说,我有一些模型集合和事件绑定到他们的事件。将这种附加到DOM的简单方法是使用'单行'。可以从内存中删除匿名创建的对象(Backbone.js示例)

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

注意这里模型有事件监听器(CRUD),集合有一些,视图有一些。

现在我们已经完成了这个视图,我们想改变视图。我们可以做这样的事情。

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

现在页面上有所有的新元素,但所有的旧元素仍然存在。我们需要一种方法来解除所有对象的所有事件。

有没有办法做到这一点。

-

我知道,如果你保持一个数组存储的所有对象,这将是可能的。通过这种方式,您可以循环播放数组,并解除所有对象的所有事件。我只是想知道这是否可能与匿名创建的对象。

回答

0

如果你可以引用视图的元素(例如,因为你知道id),那么调用$(el).remove()将从DOM中删除视图,并应该删除任何基于DOM的事件绑定(只要该视图不在监听在其el之外的DOM元素)。

但这并不一定意味着它会从内存中删除 - 您可能仍需要留意并处理其他对视图和集合的引用。