1

假设我在集合中有一些模型和绑定了事件的视图。将它附加到 DOM 的一种简单方法是使用“单线”。

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

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

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

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

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

有没有办法做到这一点。

--

我知道如果您保留一个存储所有对象的数组,这将是可能的。这样,您可以循环遍历数组并取消绑定所有对象的所有事件。我只是想知道匿名创建的对象是否可以做到这一点。

4

1 回答 1

0

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

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

于 2012-05-04T22:12:23.943 回答