gpt4 book ai didi

javascript - 清除 Knockout 中所有可观察到的绑定(bind)

转载 作者:行者123 更新时间:2023-11-30 13:05:40 27 4
gpt4 key购买 nike

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

最佳答案

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

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

ko.applyBindings(viewModel);

然后,像这样绑定(bind)您的页面:

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

现在,当页面初始绑定(bind)时,该区域将不会呈现,因为 currentTool 未定义,但 KO 将复制子项以用作"template"。

当您填充 currentTool 可观察对象时,它将呈现元素的副本并绑定(bind)内容。

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

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

关于javascript - 清除 Knockout 中所有可观察到的绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15793253/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com