【发布时间】:2014-11-01 18:23:37
【问题描述】:
我有一个全文搜索应用程序。对于用户发起的每次新搜索,从服务器返回的上下文段落和相关描述性数据都使用映射插件映射到视图模型。
但在实例化新的视图模型之前,需要销毁从先前搜索中实例化的视图模型,并且从它创建的所有 DOM 元素都从 DOM 中删除。
使用映射插件创建的陈旧 ViewModel 销毁(或从中删除项目)的正确方法是什么?
编辑: 我不明白,从documentation,如何使用这些方法:
mappedRemoveAll
mappedDestroy
mappedDestroyAll
或者如何将多个对fromJS 方法的调用与key mapping 结合起来,以便我可以使用mappedRemove 方法。我收到我的对象不支持 mappedRemove 的错误。
【问题讨论】:
-
更多细节或一些代码会有所帮助...
-
@Benjamin Gruenbaum:有没有办法像 MyViewModel.empty() 一样一举“吹走”由映射插件
fromJS创建的整个视图模型? -
为什么要清空它?您可以删除它绑定的元素(即,如上面链接中所述,反转 applyBindings),然后让 GC 处理它
-
它是一个复杂的嵌套对象,使用嵌套的 foreach 绑定绑定到 许多 个 DOM 元素。使用 View Model 不是直接处理 UI,而是处理模型,这不是重点吗?我正在寻找一种方法来告诉 Knockout,“这个模型已经失效。请删除 Knockout 从中创建的所有 DOM 元素。”
标签: knockout.js knockout-mapping-plugin