Backbone的view.remove()方法和使用$(div).html('')之间有什么区别

时间:2013-08-05 07:13:33

标签: backbone.js backbone-views

我已经看到了在单页面体系结构中管理骨干视图和附加到它们的事件的示例,您可以使用view.remove();作为当前视图,并使用require.js语法调用下一个视图,无论何时导航到不同的看法。但是,这可以通过使用$(div).html('');清空当前视图的html来实现吗?两种方法都会产生相同的结果吗?有什么区别,如果有的话?

1 个答案:

答案 0 :(得分:3)

一个简单的区别是

<强>卸下摆臂()

  

从DOM中删除视图,并调用stopListening删除任何视图   视图已收听的绑定事件。

如果您的视图在初始化中有这两个侦听器。

initialize: function() {
    this.listenTo(this.collection, 'reset', this.render);
    this.listenTo(this.model, 'change', this.render);
}

您的竞争对手正在聆听模型和集合。因此,如果您使用remove删除视图,它将取消绑定视图的事件。

如果您执行$('div').html(),仍然有对视图的引用,并且视图中的方法仍然存在于内存中,而侦听器将导致内存泄漏你的申请。这只是差异之一,可能会有更多。