1

我现在正在开发一个控制面板应用程序,每个工具都加载自己的 Javascript 文件,其中大部分包含一些 Knockout 绑定。Knockout 本身被加载到文档头部,但是工具被异步加载到#body div 中,所以我担心元素将继续被绑定,即使在加载了不同的工具之后也是如此。如果同一个元素被绑定多次,我认为这会导致内存泄漏和一些故障。在我加载新工具之前,是否可以一次清除所有 Knockout 绑定?

4

1 回答 1

3

我会推荐的一般模式是这样的:

//obviously doesn't have to be an object literal
var viewModel = {
  currentTool: ko.observable()
};

ko.applyBindings(viewModel);

然后,像这样绑定你的页面:

<div data-bind="with: currentTool">
     ...content here
</div>

现在,当页面最初被绑定时,该区域不会被渲染为currentTool未定义的,但 KO 将复制子项以用作“模板”。

当您填充currentToolobservable 时,它​​将呈现元素的副本并绑定内容。

当您更改 时currentTool,KO 将清理现有的绑定和元素,并渲染/绑定元素的新副本。

因此,您只需调用一次并根据您要显示的内容ko.applyBindings继续更新。currentTool

于 2013-04-03T18:21:32.267 回答