1

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

4

1 回答 1

3

一个简单的区别是

。消除()

从 DOM 中删除一个视图,并调用 stopListening 来删除该视图已监听的任何绑定事件。

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

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

你的意见是倾听模特和收藏。因此,如果您使用remove摆脱视图,它将取消绑定视图的事件。

好像您$('div').html()仍然存在对视图的引用,并且视图上的方法仍然存在于内存中以及侦听器中,这将导致您的应用程序中的内存泄漏。这只是差异之一,可能还有更多差异。

于 2013-08-05T07:47:09.950 回答