Javascript 淘汰赛+;Ajax内容导致多个绑定错误
我已经构建了一个包含多个页面的web应用程序。其中一些是淘汰赛 我正在尝试应用一些Ajax优化的页面加载,但遇到了以下问题 假设我有以下一般页面结构Javascript 淘汰赛+;Ajax内容导致多个绑定错误,javascript,jquery,ajax,knockout.js,Javascript,Jquery,Ajax,Knockout.js,我已经构建了一个包含多个页面的web应用程序。其中一些是淘汰赛 我正在尝试应用一些Ajax优化的页面加载,但遇到了以下问题 假设我有以下一般页面结构 <body> <div id="content"> </div> </body> 我已经尝试应用ko.cleanNode,但没有成功。我错过了什么?当显示其他内容时,应将#编辑器节点从DOM中删除。所以我真的不明白如何清理绑定或重新初始化knockout 注意:我不想要旧数据,我想要初始化绑
<body>
<div id="content">
</div>
</body>
我已经尝试应用ko.cleanNode,但没有成功。我错过了什么?当显示其他内容时,应将#编辑器节点从DOM中删除。所以我真的不明白如何清理绑定或重新初始化knockout
注意:我不想要旧数据,我想要初始化绑定,就像在新加载的页面上一样如果“编辑器”部分中的绑定没有更改,我建议您从服务器上只加载(AJAX)json数据,并在浏览器中替换(修改)您的viewModel,这样,knockout将自动刷新dom。您可以在控制台中测试您的
$(“#编辑器”).el
?它在标准jQuery中不起作用
如果您的$(“#editor”).el
返回未定义,则您的ko.applyBindings({items:{},$(“#editor”).el
实质上绑定到window.document.body
你可以试试
ko.applyBindings({items: {}}, $("#editor").get(0));
...
// call cleanNode before loading new page.
ko.cleanNode($("#editor").get(0));
$("#content").load( "newpage.html" );
感谢您的建议,但由于我的#编辑器部分没有保留,我无法简单地重新初始化视图模型;我必须重新应用绑定。哇,谢谢。事实上,$(“#编辑器”).get(0)或更短:$(“#编辑器”)[0]起作用。我没有深入研究这个方向,因为$(“#editor”).el一开始就在工作。
You cannot apply bindings multiple times to the same element.
ko.applyBindings({items: {}}, $("#editor").get(0));
...
// call cleanNode before loading new page.
ko.cleanNode($("#editor").get(0));
$("#content").load( "newpage.html" );