gpt4 book ai didi

javascript - Knockout + Ajax Content 导致多个绑定(bind)错误

转载 作者:行者123 更新时间:2023-12-02 17:35:36 25 4
gpt4 key购买 nike

我已经构建了一个具有多个页面的网络应用程序。其中一些是 knockout 驱动的。

我正在尝试应用一些 Ajax 优化的页面加载并偶然发现以下问题。

假设我有以下一般页面结构

<body>
<div id="content">
</div>
</body>

下面的 View 使用了 Knockout。我内联了对 applyBindings 的调用,以便能够为每个 View 加载正确的 ViewModel。

<section id="editor">
<ul data-bind="foreach: items">
....
</form>
</section>

<script>
ko.applyBindings({items: {}}, $("#editor").el)
</script>

我将 View 异步加载到 div#content 中,例如使用 JQuery.load("editor.html #content")

第一页加载工作正常,但是当从此 View 导航离开(再次使用 JQuery.load)并再次返回时,我收到错误:

You cannot apply bindings multiple times to the same element.

我已经尝试应用 ko.cleanNode 但没有成功。我缺少什么?当显示其他内容时,应从 DOM 中删除 #editor 节点。所以我真的不明白如何清理绑定(bind)或重新初始化 knockout 。

注意:我不需要旧数据,我想像在新加载的页面上一样初始化绑定(bind)

最佳答案

你能在控制台中测试你的$("#editor").el吗?它在标准 jQuery 中不起作用。

如果您的 $("#editor").el 返回未定义,则您的 ko.applyBindings({items: {}}, $("#editor").el) 本质上绑定(bind)到 window.document.body

你可以试试

ko.applyBindings({items: {}}, $("#editor").get(0));

...
// call cleanNode before loading new page.
ko.cleanNode($("#editor").get(0));
$("#content").load( "newpage.html" );

关于javascript - Knockout + Ajax Content 导致多个绑定(bind)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22649256/

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