1

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

4

1 回答 1

0

视图通常是内存中的结构(如 DOM 本身),因此只要您的 javascript 代码持有对它们的引用(从而使它们无法被浏览器的 JS 引擎进行垃圾收集),它们就会继续存在。关上窗户,他们就走了。单击指向另一个页面的链接,该页面执行整页加载,它们就消失了。

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

此外,正如您所注意到的,当您拥有一组要渲染的模型时,通常只为每个模型创建一个新视图,渲染它,然后不保留对它的引用。当集合发生变化时,最外层的元素被清空,新的视图实例被创建和渲染,因此旧的视图实例有资格进行自动垃圾回收。因此 javascript 将处理清理那些旧视图,但这不会对相应的模型产生任何影响,也不会触发任何 AJAX 请求。

于 2013-03-20T00:31:52.923 回答