Backbone Views是否持久

时间:2013-03-20 00:12:02

标签: backbone.js backbone-views

如果您查看Dev工具中的ToDo应用程序,每次创建新的ToDo(模型)时,都会在AppView中创建新的ToDoView。但我没有看到ToViews的“集合”。我问这个是因为我认为当模型被销毁时视图被破坏,但是无法找到参考。 感谢

1 个答案:

答案 0 :(得分:0)

视图通常是内存结构(如DOM本身),因此只要您的javascript代码包含对它们的引用(从而使它们不符合浏览器的JS引擎的垃圾收集条件),它们就会继续存在。关上窗户,他们走了。点击指向整页加载的其他页面的链接,它们就会消失。

但是,视图不会自动响应正在销毁的模型。如果您希望模型在通过主干网删除时从DOM中消失,则必须手动连接类似this.listenTo(this.model, 'destroy', this.remove.bind(this))之类的东西。

此外,正如您所注意到的,当您想要渲染的模型集合为每个模型创建一个新视图,渲染它,然后不保留对它的引用时,这种情况很常见。当集合发生更改时,最外层元素将被清空,新的视图实例将被创建和呈现,因此旧视图实例可用于自动垃圾回收。因此,javascript将处理清理那些旧视图,但这不会对相应的模型产生任何影响,也不会触发任何AJAX请求。