我想从某个div的所有子元素中删除所有绑定(ko.cleanNode)。 必须是一个noobie问题,但我无法弄清楚如何使用jQuery循环遍历所有childre,grand-children,曾祖母等,同时让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]);
或者当我将Element放入变量然后将其格式化为ko.cleanNode($ element)时。
有办法做到这一点吗?现在已经盯着它看了好几个小时,所以可能会忽略一种太明显的方式......
谢谢!
编辑:以下是我得到的错误: 未捕获错误:无法解析绑定。 消息:ReferenceError:未定义someDate; Bindings Value:value:someDate
然而,这个ko.observable“someDate”不再作为我正在导航到的“data-role ='page'”的绑定存在。由于某种原因,它仍然希望绑定此值。如果我使用removeNode()我没有这样的问题,那么我有一个问题,我错过了一个包含整个页面的DOM元素。
答案 0 :(得分:0)
你试过吗?:
$('#firstPage').undatabind();
<强>更新强>
很抱歉,这个方法是我使用的Knockout Programmatic插件的一部分,正如@NukeFace指出的那样。
干杯。