Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 淘汰赛+;Ajax内容导致多个绑定错误_Javascript_Jquery_Ajax_Knockout.js - Fatal编程技术网

Javascript 淘汰赛+;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 注意:我不想要旧数据,我想要初始化绑

我已经构建了一个包含多个页面的web应用程序。其中一些是淘汰赛

我正在尝试应用一些Ajax优化的页面加载,但遇到了以下问题

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

<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" );