我想从某个 div 的所有子元素中删除所有绑定(ko.cleanNode)。一定是一个菜鸟问题,但我不知道如何使用 jQuery 循环遍历所有子项、孙子、曾孙等,同时让 KnockoutJS 删除所有 DOM 元素的绑定。
我不想从 DOM 中删除元素。这是一个单页应用程序,因此元素被预加载为嵌入式资源,如果他们再次访问该页面,则不会重新发送给客户端。如果客户重新访问应用程序的该部分,我将有一个功能重新绑定必要的元素,目前工作正常。
当前设置:
<html>
<head>
//loading all resources
</head>
<body>
//load first element using some obscure setup
<div id="firsPage" data-role="page">
<div data-role="header">@Global.header</div>
<div data-role="fieldcontain">
<label for="firstInput" />
<input id="firstInput some other stuff />
</div>
<div data-role="datebox <!-- some settings --> >
//creates table using jQuery mobile (lots of (great-)(grand-)children)
</div>
<div data-role="fieldcontain">
<div id="secondInput">
<div class="checklist">
<ul>
<li />
<li />
</ul>
</div>
</div>
</div>
</div>
//Here the whole thing starts again
<div id="secondPage" data-role="page">
<!-- repeat above innerHTML in your mind ;) -->
</div>
//And here again! and again...
</body>
我遇到的问题是,当我使用时,孩子们的绑定似乎没有得到“清理”
ko.cleanNode($('#firstPage')[0]);
或者当我将元素放入一个变量中,然后将其格式化为 ko.cleanNode($element)。
有没有办法做到这一点?现在已经盯着它看了好几个小时,所以可能忽略了一种太明显的方式......
谢谢!
编辑:下面是我得到的错误:未捕获的错误:无法解析绑定。消息:ReferenceError:someDate 未定义;绑定值:值:someDate
然而,这个 ko.observable 'someDate' 不再作为绑定在我正在导航的“data-role='page'”上存在。出于某种原因,它继续希望与此值绑定。如果我使用 removeNode() 我没有这样的问题,那么我就会遇到我缺少包含整个页面的 DOM 元素的问题。